]> granicus.if.org Git - handbrake/commitdiff
WinGui: Auto Selection of Audio and Subtitles - Patch by vendolis (Thanks!)
authorsr55 <sr55.hb@outlook.com>
Sat, 23 Jul 2011 19:13:05 +0000 (19:13 +0000)
committersr55 <sr55.hb@outlook.com>
Sat, 23 Jul 2011 19:13:05 +0000 (19:13 +0000)
Adds finer grained control of the Automatic Audio and Subtitle selection feature.
Adds the ability to select multiple languages.
https://reviews.handbrake.fr/r/158/

git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@4127 b64f7644-9d1e-0410-96f1-a4d463321fa5

15 files changed:
win/CS/Controls/AudioPanel.cs
win/CS/Controls/Subtitles.cs
win/CS/HandBrake.ApplicationServices/Services/Interfaces/IUserSettingService.cs
win/CS/HandBrake.ApplicationServices/Services/UserSettingService.cs
win/CS/Properties/Resources.Designer.cs
win/CS/Properties/Resources.resx
win/CS/Properties/Settings.Designer.cs
win/CS/Properties/Settings.settings
win/CS/Resources/arrow_down.png [new file with mode: 0644]
win/CS/Resources/arrow_left.png [new file with mode: 0644]
win/CS/Resources/arrow_right.png [new file with mode: 0644]
win/CS/Resources/arrow_up.png [new file with mode: 0644]
win/CS/app.config
win/CS/frmOptions.Designer.cs
win/CS/frmOptions.cs

index fefd694ac713c5343997a1e9458290d64a77943b..fe56bfbdd174748820a21496ad418bfc2bac3e06 100644 (file)
@@ -6,6 +6,7 @@
 namespace Handbrake.Controls\r
 {\r
     using System;\r
+    using System.Collections;\r
     using System.Collections.Generic;\r
     using System.Collections.ObjectModel;\r
     using System.ComponentModel;\r
@@ -213,7 +214,7 @@ namespace Handbrake.Controls
                 }\r
             }\r
 \r
-            if (this.AudioTracks.Count > 0)\r
+            if (selectedTitle.AudioTracks.Count > 0)\r
             {\r
                 this.AutomaticTrackSelection();\r
             }\r
@@ -553,69 +554,115 @@ namespace Handbrake.Controls
         /// </summary>\r
         private void AutomaticTrackSelection()\r
         {\r
+            // Sanity check that we have Audio Tracks and if not, clear the track list.\r
             if (drp_audioTrack.SelectedItem != null && drp_audioTrack.SelectedItem.ToString() == AudioHelper.NoneFound.Description)\r
             {\r
                 this.AudioTracks.Clear();\r
                 return;\r
             }\r
 \r
-            // Handle Native Language and "Dub Foreign language audio" and "Use Foreign language audio and Subtitles" Options\r
+            // Remove all old Audiotracks before adding new ones. \r
+            this.AudioTracks.Clear();\r
+\r
+            // Array with the Index numbers of the prefered and additional languages. \r
+            // This allows to have for each language the order in which they appear in the DVD list.\r
+            Dictionary<String, ArrayList> languageIndex = new Dictionary<String, ArrayList>();\r
+\r
+            // This is used to keep the Prefered Language in the front and the other languages in order.\r
+            ArrayList languageOrder = new ArrayList();\r
+\r
+            // New DUB Settings\r
+            int mode = Properties.Settings.Default.DubModeAudio;\r
+\r
             if (Properties.Settings.Default.NativeLanguage == "Any")\r
+                mode = 2;\r
+\r
+            // Native Language is not 'Any', so initialising the Language Dictionary\r
+            if (mode >= 3)\r
             {\r
-                drp_audioTrack.SelectedIndex = 0;\r
-                foreach (AudioTrack track in this.audioTracks)\r
+                languageIndex.Add(Properties.Settings.Default.NativeLanguage, new ArrayList());\r
+                languageOrder.Add(Properties.Settings.Default.NativeLanguage);\r
+\r
+                foreach (string item in Properties.Settings.Default.SelectedLanguages)\r
                 {\r
-                    if (this.drp_audioTrack.SelectedItem != null)\r
+                    if (!languageIndex.ContainsKey(item))\r
                     {\r
-                        track.ScannedTrack = this.drp_audioTrack.SelectedItem as Audio;\r
+                        languageIndex.Add(item, new ArrayList());\r
+                        languageOrder.Add(item);\r
                     }\r
                 }\r
-            }\r
-            else\r
-            {\r
-                int mode = Properties.Settings.Default.DubMode;\r
-                switch (mode)\r
+\r
+                bool elementFound = false;\r
+                int i = 0;\r
+                foreach (object item in drp_audioTrack.Items)\r
                 {\r
-                    case 1:\r
-                    case 3:\r
-                        // Dub Foreign Language Audio \r
-                        // Select the prefered language audio, or the first track if it doesn't exist.\r
-                        int i = 0;\r
-                        foreach (object item in drp_audioTrack.Items)\r
+                    foreach (KeyValuePair<String, ArrayList> kvp in languageIndex)\r
+                    {\r
+                        if (item.ToString().Contains(kvp.Key))\r
                         {\r
-                            if (item.ToString().Contains(Properties.Settings.Default.NativeLanguage))\r
+                            // Only the first Element if the "Only One Audio"-option is chosen.\r
+                            if (!Properties.Settings.Default.addOnlyOneAudioPerLanguage || kvp.Value.Count == 0)\r
                             {\r
-                                drp_audioTrack.SelectedIndex = i;\r
-                                break;\r
+                                kvp.Value.Add(i);\r
                             }\r
 \r
-                            i++;\r
+                            elementFound = true;\r
                         }\r
+                    }\r
 \r
-                        if (drp_audioTrack.SelectedItem != null)\r
-                            foreach (AudioTrack track in this.audioTracks)\r
-                                track.ScannedTrack =\r
-                                    drp_audioTrack.SelectedItem as Audio;\r
-                        else\r
+                    i++;\r
+                }\r
+\r
+                // If there are no selected languages found, the first available will be taken.\r
+                if (!elementFound)\r
+                    mode = 2;\r
+            }\r
+            \r
+            switch (mode)\r
+            {\r
+                case 1: // Adding all audio tracks\r
+                    this.mnu_AddAll_Click(this, EventArgs.Empty);\r
+                    break;\r
+                case 2: // Adding only the first Audio Track\r
+                    drp_audioTrack.SelectedIndex = 0;\r
+                    if (drp_audioTrack.SelectedItem != null)\r
+                        this.AddAudioTrack_Click(this, EventArgs.Empty);\r
+                    break;\r
+                case 3:\r
+                    foreach (string item in languageOrder)\r
+                    {\r
+                        if (languageIndex[item].Count > 0)\r
                         {\r
-                            drp_audioTrack.SelectedIndex = 0;\r
+                            foreach (int i in languageIndex[item])\r
+                            {\r
+                                drp_audioTrack.SelectedIndex = i;\r
+                                if (drp_audioTrack.SelectedItem != null)\r
+                                {\r
+                                    this.AddAudioTrack_Click(this, EventArgs.Empty);\r
+                                    audioList.ClearSelection();\r
+                                }\r
+                            }\r
+                        }\r
+                    }\r
+                    break;\r
+                case 4:\r
+                    if (languageIndex[(string)languageOrder[0]].Count > 0)\r
+                    {\r
+                        foreach (int i in languageIndex[(string)languageOrder[0]])\r
+                        {\r
+                            drp_audioTrack.SelectedIndex = i;\r
                             if (drp_audioTrack.SelectedItem != null)\r
-                                foreach (AudioTrack track in this.audioTracks)\r
-                                    track.ScannedTrack = drp_audioTrack.SelectedItem as Audio;\r
+                            {\r
+                                this.AddAudioTrack_Click(this, EventArgs.Empty);\r
+                                audioList.ClearSelection();\r
+                            }\r
                         }\r
-\r
-                        break;\r
-                    case 2:\r
-                    default:\r
-                        // Select the first track which is hopefully the default and foreign track.\r
-                        drp_audioTrack.SelectedIndex = 0;\r
-\r
-                        if (drp_audioTrack.SelectedItem != null)\r
-                            foreach (AudioTrack track in this.audioTracks)\r
-                                track.ScannedTrack = drp_audioTrack.SelectedItem as Audio;\r
-                        break;\r
-                }\r
+                    }\r
+                    break;\r
             }\r
+\r
+            // Revert the selection back tio the first item.\r
+            drp_audioTrack.SelectedIndex = 0;\r
         }\r
 \r
         /// <summary>\r
index e277a8c1a0ca1991b56db27f94ffff3accc8cc58..1c8bef8cc6758b7b5bdac5ea99e40b19a2955694 100644 (file)
@@ -6,6 +6,7 @@
 namespace Handbrake.Controls\r
 {\r
     using System;\r
+    using System.Collections;\r
     using System.Collections.Generic;\r
     using System.IO;\r
     using System.Linq;\r
@@ -190,23 +191,114 @@ namespace Handbrake.Controls
         /// </summary>\r
         public void AutomaticSubtitleSelection()\r
         {\r
-            // Handle Native Language and "Dub Foreign language audio" and "Use Foreign language audio and Subtitles" Options\r
-            if (Properties.Settings.Default.NativeLanguage != "Any")\r
+            // Avoid trying to add elements when no subtitles are there.\r
+            if (drp_subtitleTracks.Items.Count < 2)\r
             {\r
-                if (Properties.Settings.Default.DubMode != 1) // We need to add a subtitle track if this is false.\r
+                return;\r
+            }\r
+\r
+            this.Clear();\r
+\r
+            // Array with the Index numbers of the prefered and additional languages. \r
+            // This allows to have for each language the order in which they appear in the DVD list.\r
+            Dictionary<String, ArrayList> languageIndex = new Dictionary<String, ArrayList>();\r
+\r
+            // This is used to keep the Prefered Language in the front and the other languages in order.\r
+            ArrayList languageOrder = new ArrayList();\r
+\r
+            // New DUB Settings\r
+            int mode = Properties.Settings.Default.DubModeSubtitle;\r
+\r
+            if (Properties.Settings.Default.NativeLanguage == "Any")\r
+                mode = 0;\r
+\r
+            // Native Language is not 'Any', so initialising the Language Dictionary\r
+            if (mode >= 3)\r
+            {\r
+                languageIndex.Add(Properties.Settings.Default.NativeLanguage, new ArrayList());\r
+                languageOrder.Add(Properties.Settings.Default.NativeLanguage);\r
+\r
+                foreach (string item in Properties.Settings.Default.SelectedLanguages)\r
                 {\r
-                    foreach (object item in drp_subtitleTracks.Items)\r
+                    if (!languageIndex.ContainsKey(item))\r
                     {\r
-                        if (item.ToString().Contains(Properties.Settings.Default.NativeLanguage))\r
+                        languageIndex.Add(item, new ArrayList());\r
+                        languageOrder.Add(item);\r
+                    }\r
+                }\r
+\r
+                bool elementFound = false;\r
+                int i = 0;\r
+                foreach (object item in drp_subtitleTracks.Items)\r
+                {\r
+                    foreach (KeyValuePair<String, ArrayList> kvp in languageIndex)\r
+                    {\r
+                        if (item.ToString().Contains(kvp.Key))\r
                         {\r
-                            drp_subtitleTracks.SelectedItem = item;\r
-                            BtnAddSubTrackClick(this, new EventArgs());\r
+                            kvp.Value.Add(i);\r
+                            elementFound = true;\r
                         }\r
                     }\r
+\r
+                    i++;\r
                 }\r
+\r
+                // If there are no selected languages found, the first available will be taken.\r
+                if (!elementFound)\r
+                    mode = 2;\r
             }\r
 \r
+            switch (mode)\r
+            {\r
+                case 1: // Adding all audio tracks\r
+                    for (int i = 1; i < drp_subtitleTracks.Items.Count; i++)\r
+                    {\r
+                        drp_subtitleTracks.SelectedIndex = i;\r
+                        this.BtnAddSubTrackClick(this, new EventArgs());\r
+                    }\r
+                    break;\r
+                case 2: // Adding only the first Audio Track\r
+                    drp_subtitleTracks.SelectedIndex = 1;\r
+                    if (drp_subtitleTracks.SelectedItem != null)\r
+                        this.BtnAddSubTrackClick(this, new EventArgs());\r
+                    break;\r
+                case 3:\r
+                    foreach (string item in languageOrder)\r
+                    {\r
+                        if (languageIndex[item].Count > 0)\r
+                        {\r
+                            foreach (int i in languageIndex[item])\r
+                            {\r
+                                drp_subtitleTracks.SelectedIndex = i;\r
+                                if (drp_subtitleTracks.SelectedItem != null)\r
+                                {\r
+                                    this.BtnAddSubTrackClick(this, new EventArgs());\r
+                                    //subList.ClearSelection();\r
+                                }\r
+                            }\r
+                        }\r
+                    }\r
+                    break;\r
+                case 4:\r
+                    if (languageIndex[(string)languageOrder[0]].Count > 0)\r
+                    {\r
+                        foreach (int i in languageIndex[(string)languageOrder[0]])\r
+                        {\r
+                            drp_subtitleTracks.SelectedIndex = i;\r
+                            if (drp_subtitleTracks.SelectedItem != null)\r
+                            {\r
+                                this.BtnAddSubTrackClick(this, new EventArgs());\r
+                                //subList.ClearSelection();\r
+                            }\r
+                        }\r
+                    }\r
+                    break;\r
+            }\r
+\r
+            // Revert the selection back tio the first item.\r
+            drp_subtitleTracks.SelectedIndex = 0;\r
 \r
+            // Add Closed Captions if the user has the option enabled.\r
             if (Properties.Settings.Default.useClosedCaption)\r
             {\r
                 foreach (object item in drp_subtitleTracks.Items)\r
@@ -214,7 +306,7 @@ namespace Handbrake.Controls
                     if (item.ToString().Contains("Closed"))\r
                     {\r
                         drp_subtitleTracks.SelectedItem = item;\r
-                        BtnAddSubTrackClick(this, new EventArgs());\r
+                        BtnAddSubTrackClick(this, EventArgs.Empty);\r
                     }\r
                 }\r
             }\r
index 46ca316f41d66b07abd2721b9d9c90602cbbb29c..9a96edab23855b199954ec34e0e36313ee9c94f2 100644 (file)
@@ -65,5 +65,17 @@ namespace HandBrake.ApplicationServices.Services.Interfaces
         /// The settings value\r
         /// </returns>\r
         double GetUserSettingDouble(string name);\r
+\r
+        /// <summary>\r
+        /// Get an StringCollection type user setting\r
+        /// </summary>\r
+        /// <param name="name">\r
+        /// The setting name\r
+        /// </param>\r
+        /// <returns>\r
+        /// The settings value\r
+        /// </returns>\r
+        System.Collections.Specialized.StringCollection GetUserSettingStringCollection(string name);\r
+\r
     }\r
 }
\ No newline at end of file
index 87d77324f054c2959aff8a10ca2a948db55da4ba..f6d6c55e2229dde6f9c3296f9965208ebdfa0474 100644 (file)
@@ -91,5 +91,24 @@ namespace HandBrake.ApplicationServices.Services
 \r
             return value;\r
         }\r
+\r
+        /// <summary>\r
+        /// Get an StringCollection type user setting\r
+        /// </summary>\r
+        /// <param name="name">\r
+        /// The setting name\r
+        /// </param>\r
+        /// <returns>\r
+        /// The settings value\r
+        /// </returns>\r
+        public System.Collections.Specialized.StringCollection GetUserSettingStringCollection(string name)\r
+        {\r
+            System.Collections.Specialized.StringCollection value;\r
+\r
+            value = (System.Collections.Specialized.StringCollection) Properties.Settings.Default[name];\r
+\r
+            return value;\r
+        }\r
+\r
     }\r
 }\r
index 81617ccdb67361e6348f9aa5ff5a3f44b9822ce5..43f3aa29a60fa9f9596f26dd5a252c5d9e453941 100644 (file)
@@ -1,7 +1,7 @@
 ï»¿//------------------------------------------------------------------------------\r
 // <auto-generated>\r
 //     This code was generated by a tool.\r
-//     Runtime Version:4.0.30319.1\r
+//     Runtime Version:4.0.30319.235\r
 //\r
 //     Changes to this file may cause incorrect behavior and will be lost if\r
 //     the code is regenerated.\r
@@ -95,6 +95,34 @@ namespace Handbrake.Properties {
             }\r
         }\r
         \r
+        internal static System.Drawing.Bitmap arrow_down {\r
+            get {\r
+                object obj = ResourceManager.GetObject("arrow_down", resourceCulture);\r
+                return ((System.Drawing.Bitmap)(obj));\r
+            }\r
+        }\r
+        \r
+        internal static System.Drawing.Bitmap arrow_left {\r
+            get {\r
+                object obj = ResourceManager.GetObject("arrow_left", resourceCulture);\r
+                return ((System.Drawing.Bitmap)(obj));\r
+            }\r
+        }\r
+        \r
+        internal static System.Drawing.Bitmap arrow_right {\r
+            get {\r
+                object obj = ResourceManager.GetObject("arrow_right", resourceCulture);\r
+                return ((System.Drawing.Bitmap)(obj));\r
+            }\r
+        }\r
+        \r
+        internal static System.Drawing.Bitmap arrow_up {\r
+            get {\r
+                object obj = ResourceManager.GetObject("arrow_up", resourceCulture);\r
+                return ((System.Drawing.Bitmap)(obj));\r
+            }\r
+        }\r
+        \r
         internal static System.Drawing.Bitmap Close {\r
             get {\r
                 object obj = ResourceManager.GetObject("Close", resourceCulture);\r
index 9b2288d09a2b70b25b774e12c6941dc9ebe8e02f..8267bd0076f3caa1be5bac5b4156ec4b8f1a7888 100644 (file)
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
   </resheader>\r
   <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />\r
-  <data name="General_Preferences" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
-    <value>..\Resources\General Preferences.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
-  </data>\r
-  <data name="Pref_Small" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
-    <value>..\Resources\Pref_Small.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
-  </data>\r
   <data name="ActivityWindow" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
     <value>..\Resources\ActivityWindow.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
   </data>\r
+  <data name="Help16" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
+    <value>..\Resources\Help16.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
+  </data>\r
+  <data name="Download" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
+    <value>..\Resources\download.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
+  </data>\r
+  <data name="info16" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
+    <value>..\Resources\info16.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
+  </data>\r
+  <data name="picture" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
+    <value>..\Resources\picture.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
+  </data>\r
   <data name="Play" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
     <value>..\Resources\Play.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
   </data>\r
-  <data name="Pause" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
-    <value>..\Resources\Pause.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
+  <data name="Restore" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
+    <value>..\Resources\Restore.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
   </data>\r
-  <data name="Output_Small" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
-    <value>..\Resources\Output_Small.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
+  <data name="AddToQueue_small" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
+    <value>..\Resources\AddToQueue_small.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
   </data>\r
-  <data name="Queue_Small" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
-    <value>..\Resources\Queue_Small.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
+  <data name="window" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
+    <value>..\resources\window.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
   </data>\r
   <data name="Movies" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
     <value>..\Resources\Movies.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
   </data>\r
-  <data name="Movies_Small" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
-    <value>..\Resources\Movies_Small.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
+  <data name="folder" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
+    <value>..\Resources\folder.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
   </data>\r
-  <data name="AddToQueue" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
-    <value>..\Resources\AddToQueue.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
+  <data name="copy" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
+    <value>..\resources\copy.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
+  </data>\r
+  <data name="Pref_Small" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
+    <value>..\Resources\Pref_Small.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
   </data>\r
   <data name="disc_small" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
     <value>..\resources\disc_small.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
   </data>\r
-  <data name="ActivityWindow_small" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
-    <value>..\resources\activitywindow_small.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
+  <data name="Output_Small" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
+    <value>..\Resources\Output_Small.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
   </data>\r
-  <data name="hb16" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
-    <value>..\Resources\hb16.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
+  <data name="logo128" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
+    <value>..\Resources\logo128.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
+  </data>\r
+  <data name="stop" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
+    <value>..\Resources\stop.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
+  </data>\r
+  <data name="Pause" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
+    <value>..\Resources\Pause.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
+  </data>\r
+  <data name="Help24" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
+    <value>..\Resources\Help24.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
+  </data>\r
+  <data name="Help32" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
+    <value>..\Resources\Help32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
   </data>\r
   <data name="hb32" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
     <value>..\Resources\hb32.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
   </data>\r
-  <data name="Help16" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
-    <value>..\Resources\Help16.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
+  <data name="Queue_Small" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
+    <value>..\Resources\Queue_Small.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
   </data>\r
-  <data name="info16" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
-    <value>..\Resources\info16.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
+  <data name="ActivityWindow_small" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
+    <value>..\resources\activitywindow_small.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
+  </data>\r
+  <data name="General_Preferences" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
+    <value>..\Resources\General Preferences.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
   </data>\r
   <data name="logo64" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
     <value>..\Resources\logo64.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
   </data>\r
-  <data name="stop" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
-    <value>..\Resources\stop.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
-  </data>\r
-  <data name="folder" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
-    <value>..\Resources\folder.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
-  </data>\r
-  <data name="save" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
-    <value>..\Resources\save.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
+  <data name="ErrorX" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
+    <value>..\Resources\ErrorX.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
   </data>\r
   <data name="Queue" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
     <value>..\Resources\Queue.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
   </data>\r
-  <data name="copy" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
-    <value>..\resources\copy.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
-  </data>\r
-  <data name="window" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
-    <value>..\resources\window.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
+  <data name="Close" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
+    <value>..\Resources\Close.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
   </data>\r
-  <data name="picture" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
-    <value>..\Resources\picture.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
+  <data name="save" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
+    <value>..\Resources\save.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
   </data>\r
-  <data name="AddToQueue_small" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
-    <value>..\Resources\AddToQueue_small.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
+  <data name="AddToQueue" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
+    <value>..\Resources\AddToQueue.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
   </data>\r
   <data name="Play_small" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
     <value>..\Resources\Play_small.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
   </data>\r
-  <data name="Download" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
-    <value>..\Resources\download.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
-  </data>\r
-  <data name="Restore" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
-    <value>..\Resources\Restore.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
-  </data>\r
-  <data name="logo128" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
-    <value>..\Resources\logo128.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
-  </data>\r
-  <data name="ErrorX" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
-    <value>..\Resources\ErrorX.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
-  </data>\r
-  <data name="Help24" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
-    <value>..\Resources\Help24.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
-  </data>\r
-  <data name="Help32" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
-    <value>..\Resources\Help32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
+  <data name="Movies_Small" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
+    <value>..\Resources\Movies_Small.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
   </data>\r
   <data name="Add16" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
     <value>..\Resources\Add16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
   </data>\r
+  <data name="hb16" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
+    <value>..\Resources\hb16.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
+  </data>\r
   <data name="Options24" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
     <value>..\Resources\Options24.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
   </data>\r
-  <data name="Close" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
-    <value>..\Resources\Close.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
+  <data name="arrow_left" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
+    <value>..\Resources\arrow_left.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
+  </data>\r
+  <data name="arrow_right" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
+    <value>..\Resources\arrow_right.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
+  </data>\r
+  <data name="arrow_down" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
+    <value>..\Resources\arrow_down.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
+  </data>\r
+  <data name="arrow_up" type="System.Resources.ResXFileRef, System.Windows.Forms">\r
+    <value>..\Resources\arrow_up.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\r
   </data>\r
 </root>
\ No newline at end of file
index b97ad5ed41dd6cb6849d153479e7670ae1ca23e6..a2da3dc99558b7ae91229dc17506e0b8268fcf01 100644 (file)
@@ -1,7 +1,7 @@
 ï»¿//------------------------------------------------------------------------------\r
 // <auto-generated>\r
 //     This code was generated by a tool.\r
-//     Runtime Version:4.0.30319.225\r
+//     Runtime Version:4.0.30319.235\r
 //\r
 //     Changes to this file may cause incorrect behavior and will be lost if\r
 //     the code is regenerated.\r
@@ -252,7 +252,7 @@ namespace Handbrake.Properties {
         \r
         [global::System.Configuration.UserScopedSettingAttribute()]\r
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r
-        [global::System.Configuration.DefaultSettingValueAttribute("0")]\r
+        [global::System.Configuration.DefaultSettingValueAttribute("255")]\r
         public int DubMode {\r
             get {\r
                 return ((int)(this["DubMode"]));\r
@@ -393,5 +393,54 @@ namespace Handbrake.Properties {
                 this["defaultPlayer"] = value;\r
             }\r
         }\r
+        \r
+        [global::System.Configuration.UserScopedSettingAttribute()]\r
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r
+        [global::System.Configuration.DefaultSettingValueAttribute("<?xml version=\"1.0\" encoding=\"utf-16\"?>\r\n<ArrayOfString xmlns:xsi=\"http://www.w3." +\r
+            "org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" />")]\r
+        public global::System.Collections.Specialized.StringCollection SelectedLanguages {\r
+            get {\r
+                return ((global::System.Collections.Specialized.StringCollection)(this["SelectedLanguages"]));\r
+            }\r
+            set {\r
+                this["SelectedLanguages"] = value;\r
+            }\r
+        }\r
+        \r
+        [global::System.Configuration.UserScopedSettingAttribute()]\r
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r
+        [global::System.Configuration.DefaultSettingValueAttribute("4")]\r
+        public int DubModeAudio {\r
+            get {\r
+                return ((int)(this["DubModeAudio"]));\r
+            }\r
+            set {\r
+                this["DubModeAudio"] = value;\r
+            }\r
+        }\r
+        \r
+        [global::System.Configuration.UserScopedSettingAttribute()]\r
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r
+        [global::System.Configuration.DefaultSettingValueAttribute("0")]\r
+        public int DubModeSubtitle {\r
+            get {\r
+                return ((int)(this["DubModeSubtitle"]));\r
+            }\r
+            set {\r
+                this["DubModeSubtitle"] = value;\r
+            }\r
+        }\r
+        \r
+        [global::System.Configuration.UserScopedSettingAttribute()]\r
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r
+        [global::System.Configuration.DefaultSettingValueAttribute("True")]\r
+        public bool addOnlyOneAudioPerLanguage {\r
+            get {\r
+                return ((bool)(this["addOnlyOneAudioPerLanguage"]));\r
+            }\r
+            set {\r
+                this["addOnlyOneAudioPerLanguage"] = value;\r
+            }\r
+        }\r
     }\r
 }\r
index 1e27ad776f580b3081e5495b6a92dea7e588dd04..7e9eac8e7286da69387f1207c538bed6964086f7 100644 (file)
@@ -60,7 +60,7 @@
       <Value Profile="(Default)">Any</Value>\r
     </Setting>\r
     <Setting Name="DubMode" Type="System.Int32" Scope="User">\r
-      <Value Profile="(Default)">0</Value>\r
+      <Value Profile="(Default)">255</Value>\r
     </Setting>\r
     <Setting Name="CliExeHash" Type="System.String" Scope="User">\r
       <Value Profile="(Default)" />\r
     <Setting Name="defaultPlayer" Type="System.Boolean" Scope="User">\r
       <Value Profile="(Default)">False</Value>\r
     </Setting>\r
+    <Setting Name="SelectedLanguages" Type="System.Collections.Specialized.StringCollection" Scope="User">\r
+      <Value Profile="(Default)">&lt;?xml version="1.0" encoding="utf-16"?&gt;\r
+&lt;ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" /&gt;</Value>\r
+    </Setting>\r
+    <Setting Name="DubModeAudio" Type="System.Int32" Scope="User">\r
+      <Value Profile="(Default)">4</Value>\r
+    </Setting>\r
+    <Setting Name="DubModeSubtitle" Type="System.Int32" Scope="User">\r
+      <Value Profile="(Default)">0</Value>\r
+    </Setting>\r
+    <Setting Name="addOnlyOneAudioPerLanguage" Type="System.Boolean" Scope="User">\r
+      <Value Profile="(Default)">True</Value>\r
+    </Setting>\r
   </Settings>\r
 </SettingsFile>
\ No newline at end of file
diff --git a/win/CS/Resources/arrow_down.png b/win/CS/Resources/arrow_down.png
new file mode 100644 (file)
index 0000000..9a8de4f
Binary files /dev/null and b/win/CS/Resources/arrow_down.png differ
diff --git a/win/CS/Resources/arrow_left.png b/win/CS/Resources/arrow_left.png
new file mode 100644 (file)
index 0000000..713030f
Binary files /dev/null and b/win/CS/Resources/arrow_left.png differ
diff --git a/win/CS/Resources/arrow_right.png b/win/CS/Resources/arrow_right.png
new file mode 100644 (file)
index 0000000..a270c54
Binary files /dev/null and b/win/CS/Resources/arrow_right.png differ
diff --git a/win/CS/Resources/arrow_up.png b/win/CS/Resources/arrow_up.png
new file mode 100644 (file)
index 0000000..530daed
Binary files /dev/null and b/win/CS/Resources/arrow_up.png differ
index 1ec2d1e869970588b2b658c923058ab706d23cde..a95fe0be311c883ec638e85d092b844cd995bcdb 100644 (file)
@@ -68,7 +68,7 @@
         <value>Any</value>\r
       </setting>\r
       <setting name="DubMode" serializeAs="String">\r
-        <value>0</value>\r
+        <value>255</value>\r
       </setting>\r
       <setting name="CliExeHash" serializeAs="String">\r
         <value />\r
       <setting name="defaultPlayer" serializeAs="String">\r
         <value>False</value>\r
       </setting>\r
+      <setting name="SelectedLanguages" serializeAs="Xml">\r
+        <value>\r
+          <ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
+            xmlns:xsd="http://www.w3.org/2001/XMLSchema" />\r
+        </value>\r
+      </setting>\r
+      <setting name="DubModeAudio" serializeAs="String">\r
+        <value>4</value>\r
+      </setting>\r
+      <setting name="DubModeSubtitle" serializeAs="String">\r
+        <value>0</value>\r
+      </setting>\r
+      <setting name="addOnlyOneAudioPerLanguage" serializeAs="String">\r
+        <value>True</value>\r
+      </setting>\r
     </Handbrake.Properties.Settings>\r
   </userSettings>\r
   \r
index 04350e9b3090e41b53b451990f1914cffda52be0..37d5567e1cc14f80fc2cd19337b4dc065b5ef4f9 100644 (file)
@@ -71,13 +71,46 @@ namespace Handbrake
             this.txt_vlcPath = new System.Windows.Forms.TextBox();\r
             this.label36 = new System.Windows.Forms.Label();\r
             this.tab_audio_sub = new System.Windows.Forms.TabPage();\r
-            this.radio_preferredAudioAndSubs = new System.Windows.Forms.RadioButton();\r
+            this.groupBox3 = new System.Windows.Forms.GroupBox();\r
+            this.label48 = new System.Windows.Forms.Label();\r
+            this.groupBox2 = new System.Windows.Forms.GroupBox();\r
+            this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();\r
+            this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();\r
+            this.radio_Audio_Selected = new System.Windows.Forms.RadioButton();\r
+            this.radio_Audio_None = new System.Windows.Forms.RadioButton();\r
+            this.radio_Audio_PrefOnly = new System.Windows.Forms.RadioButton();\r
+            this.radio_Audio_All = new System.Windows.Forms.RadioButton();\r
+            this.radio_Audio_First = new System.Windows.Forms.RadioButton();\r
+            this.label42 = new System.Windows.Forms.Label();\r
+            this.label43 = new System.Windows.Forms.Label();\r
             this.check_AddCCTracks = new System.Windows.Forms.CheckBox();\r
+            this.tableLayoutPanel4 = new System.Windows.Forms.TableLayoutPanel();\r
+            this.label45 = new System.Windows.Forms.Label();\r
+            this.label41 = new System.Windows.Forms.Label();\r
+            this.label47 = new System.Windows.Forms.Label();\r
+            this.label46 = new System.Windows.Forms.Label();\r
+            this.label44 = new System.Windows.Forms.Label();\r
+            this.tableLayoutPanel3 = new System.Windows.Forms.TableLayoutPanel();\r
+            this.radio_Subtitle_Selected = new System.Windows.Forms.RadioButton();\r
+            this.radio_Subtitle_None = new System.Windows.Forms.RadioButton();\r
+            this.radio_Subtitle_PrefOnly = new System.Windows.Forms.RadioButton();\r
+            this.radio_Subtitle_All = new System.Windows.Forms.RadioButton();\r
+            this.radio_Subtitle_First = new System.Windows.Forms.RadioButton();\r
+            this.check_AddOnlyOneAudioPerLanguage = new System.Windows.Forms.CheckBox();\r
+            this.groupBox1 = new System.Windows.Forms.GroupBox();\r
+            this.panel3 = new System.Windows.Forms.Panel();\r
+            this.button_moveLanguageDown = new System.Windows.Forms.Button();\r
+            this.button_moveLanguageUp = new System.Windows.Forms.Button();\r
+            this.label40 = new System.Windows.Forms.Label();\r
+            this.label39 = new System.Windows.Forms.Label();\r
+            this.button_clearLanguage = new System.Windows.Forms.Button();\r
+            this.button_removeLanguage = new System.Windows.Forms.Button();\r
+            this.button_addLanguage = new System.Windows.Forms.Button();\r
+            this.listBox_selectedLanguages = new System.Windows.Forms.ListBox();\r
+            this.listBox_availableLanguages = new System.Windows.Forms.ListBox();\r
             this.label31 = new System.Windows.Forms.Label();\r
             this.label15 = new System.Windows.Forms.Label();\r
-            this.radio_foreignAndSubs = new System.Windows.Forms.RadioButton();\r
             this.drop_preferredLang = new System.Windows.Forms.ComboBox();\r
-            this.radio_dub = new System.Windows.Forms.RadioButton();\r
             this.tab_cli = new System.Windows.Forms.TabPage();\r
             this.label11 = new System.Windows.Forms.Label();\r
             this.check_preventSleep = new System.Windows.Forms.CheckBox();\r
@@ -111,7 +144,6 @@ namespace Handbrake
             this.check_disablePresetNotification = new System.Windows.Forms.CheckBox();\r
             this.label28 = new System.Windows.Forms.Label();\r
             this.label8 = new System.Windows.Forms.Label();\r
-            this.pictureBox2 = new System.Windows.Forms.PictureBox();\r
             this.pathFinder = new System.Windows.Forms.FolderBrowserDialog();\r
             this.ToolTip = new System.Windows.Forms.ToolTip(this.components);\r
             this.textBox1 = new System.Windows.Forms.TextBox();\r
@@ -146,15 +178,24 @@ namespace Handbrake
             this.panel1 = new System.Windows.Forms.Panel();\r
             this.label37 = new System.Windows.Forms.Label();\r
             this.panel2 = new System.Windows.Forms.Panel();\r
+            this.pictureBox2 = new System.Windows.Forms.PictureBox();\r
             this.tab_options.SuspendLayout();\r
             this.tab_general.SuspendLayout();\r
             this.tab_outputFiles.SuspendLayout();\r
             this.tab_picture.SuspendLayout();\r
             this.tab_audio_sub.SuspendLayout();\r
+            this.groupBox3.SuspendLayout();\r
+            this.groupBox2.SuspendLayout();\r
+            this.tableLayoutPanel1.SuspendLayout();\r
+            this.tableLayoutPanel2.SuspendLayout();\r
+            this.tableLayoutPanel4.SuspendLayout();\r
+            this.tableLayoutPanel3.SuspendLayout();\r
+            this.groupBox1.SuspendLayout();\r
+            this.panel3.SuspendLayout();\r
             this.tab_cli.SuspendLayout();\r
             this.tab_advanced.SuspendLayout();\r
-            ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit();\r
             this.panel1.SuspendLayout();\r
+            ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit();\r
             this.SuspendLayout();\r
             // \r
             // btn_close\r
@@ -244,8 +285,8 @@ namespace Handbrake
             this.txt_SendFileArgs.Size = new System.Drawing.Size(178, 21);\r
             this.txt_SendFileArgs.TabIndex = 108;\r
             this.ToolTip.SetToolTip(this.txt_SendFileArgs, "These are the command line arguments that will be placed before the file name.\r\ne" +\r
-                    ".g  vlc.exe {your arguments}  output_file.mp4\r\n\r\nThis can be left blank for many" +\r
-                    " applications.\r\n");\r
+        ".g  vlc.exe {your arguments}  output_file.mp4\r\n\r\nThis can be left blank for many" +\r
+        " applications.\r\n");\r
             this.txt_SendFileArgs.TextChanged += new System.EventHandler(this.txt_SendFileArgs_TextChanged);\r
             // \r
             // lbl_sendFileTo\r
@@ -266,7 +307,7 @@ namespace Handbrake
             this.check_sendFileTo.TabIndex = 106;\r
             this.check_sendFileTo.Text = "Send File to:";\r
             this.ToolTip.SetToolTip(this.check_sendFileTo, "Automatically send the output file to another application after encoding has comp" +\r
-                    "leted.");\r
+        "leted.");\r
             this.check_sendFileTo.UseVisualStyleBackColor = true;\r
             this.check_sendFileTo.CheckedChanged += new System.EventHandler(this.check_sendFileTo_CheckedChanged);\r
             // \r
@@ -293,7 +334,7 @@ namespace Handbrake
             this.check_growlEncode.TabIndex = 99;\r
             this.check_growlEncode.Text = "Growl after Encode Completes";\r
             this.ToolTip.SetToolTip(this.check_growlEncode, "If you have \"Growl for Windows\" installed, you can use this feature to see growl " +\r
-                    "alerts on your desktop.");\r
+        "alerts on your desktop.");\r
             this.check_growlEncode.UseVisualStyleBackColor = false;\r
             this.check_growlEncode.CheckedChanged += new System.EventHandler(this.check_growlEncode_CheckedChanged);\r
             // \r
@@ -307,7 +348,7 @@ namespace Handbrake
             this.check_GrowlQueue.TabIndex = 98;\r
             this.check_GrowlQueue.Text = "Growl after Queue Completes";\r
             this.ToolTip.SetToolTip(this.check_GrowlQueue, "If you have \"Growl for Windows\" installed, you can use this feature to see growl " +\r
-                    "alerts on your desktop.");\r
+        "alerts on your desktop.");\r
             this.check_GrowlQueue.UseVisualStyleBackColor = false;\r
             this.check_GrowlQueue.CheckedChanged += new System.EventHandler(this.check_GrowlQueue_CheckedChanged);\r
             // \r
@@ -361,7 +402,7 @@ namespace Handbrake
             this.check_updateCheck.TabIndex = 68;\r
             this.check_updateCheck.Text = "Check for updates";\r
             this.ToolTip.SetToolTip(this.check_updateCheck, "Enables the built in update checker. This check is performed when the application" +\r
-                    " starts.");\r
+        " starts.");\r
             this.check_updateCheck.UseVisualStyleBackColor = false;\r
             this.check_updateCheck.CheckedChanged += new System.EventHandler(this.check_updateCheck_CheckedChanged);\r
             // \r
@@ -405,8 +446,8 @@ namespace Handbrake
             this.txt_autoNameFormat.Size = new System.Drawing.Size(349, 21);\r
             this.txt_autoNameFormat.TabIndex = 79;\r
             this.ToolTip.SetToolTip(this.txt_autoNameFormat, "Define the format of the automatically named file.\r\ne.g  {source}_{title}_some-te" +\r
-                    "xt\r\n{source} {title} {chapters} will be automatically substituted for the input " +\r
-                    "sources values.");\r
+        "xt\r\n{source} {title} {chapters} will be automatically substituted for the input " +\r
+        "sources values.");\r
             this.txt_autoNameFormat.TextChanged += new System.EventHandler(this.txt_autoNameFormat_TextChanged);\r
             // \r
             // label7\r
@@ -527,7 +568,7 @@ namespace Handbrake
             this.check_TitleCase.TabIndex = 101;\r
             this.check_TitleCase.Text = "Change case to Title Case";\r
             this.ToolTip.SetToolTip(this.check_TitleCase, "For the {source} option:.\r\nChange the source name to Title Case\r\ne.g \"MOVIE NAME\"" +\r
-                    " to \"Movie Name\"\r\n");\r
+        " to \"Movie Name\"\r\n");\r
             this.check_TitleCase.UseVisualStyleBackColor = true;\r
             this.check_TitleCase.CheckedChanged += new System.EventHandler(this.check_TitleCase_CheckedChanged);\r
             // \r
@@ -590,7 +631,7 @@ namespace Handbrake
             this.txt_vlcPath.Size = new System.Drawing.Size(395, 21);\r
             this.txt_vlcPath.TabIndex = 81;\r
             this.ToolTip.SetToolTip(this.txt_vlcPath, "The path where VLC is installed on this system.\r\nThis is used for the video previ" +\r
-                    "ew feature.");\r
+        "ew feature.");\r
             this.txt_vlcPath.TextChanged += new System.EventHandler(this.txt_vlcPath_TextChanged);\r
             // \r
             // label36\r
@@ -604,13 +645,12 @@ namespace Handbrake
             // \r
             // tab_audio_sub\r
             // \r
-            this.tab_audio_sub.Controls.Add(this.radio_preferredAudioAndSubs);\r
-            this.tab_audio_sub.Controls.Add(this.check_AddCCTracks);\r
+            this.tab_audio_sub.Controls.Add(this.groupBox3);\r
+            this.tab_audio_sub.Controls.Add(this.groupBox2);\r
+            this.tab_audio_sub.Controls.Add(this.groupBox1);\r
             this.tab_audio_sub.Controls.Add(this.label31);\r
             this.tab_audio_sub.Controls.Add(this.label15);\r
-            this.tab_audio_sub.Controls.Add(this.radio_foreignAndSubs);\r
             this.tab_audio_sub.Controls.Add(this.drop_preferredLang);\r
-            this.tab_audio_sub.Controls.Add(this.radio_dub);\r
             this.tab_audio_sub.Location = new System.Drawing.Point(4, 22);\r
             this.tab_audio_sub.Name = "tab_audio_sub";\r
             this.tab_audio_sub.Padding = new System.Windows.Forms.Padding(3);\r
@@ -619,37 +659,505 @@ namespace Handbrake
             this.tab_audio_sub.Text = "Audio and Subtitles";\r
             this.tab_audio_sub.UseVisualStyleBackColor = true;\r
             // \r
-            // radio_preferredAudioAndSubs\r
-            // \r
-            this.radio_preferredAudioAndSubs.AutoSize = true;\r
-            this.radio_preferredAudioAndSubs.Location = new System.Drawing.Point(200, 99);\r
-            this.radio_preferredAudioAndSubs.Name = "radio_preferredAudioAndSubs";\r
-            this.radio_preferredAudioAndSubs.Size = new System.Drawing.Size(250, 17);\r
-            this.radio_preferredAudioAndSubs.TabIndex = 93;\r
-            this.radio_preferredAudioAndSubs.TabStop = true;\r
-            this.radio_preferredAudioAndSubs.Text = "Use Preferred Language for Audio and Subtitles";\r
-            this.ToolTip.SetToolTip(this.radio_preferredAudioAndSubs, "Use Preferred Language for Audio and Subtitle.");\r
-            this.radio_preferredAudioAndSubs.UseVisualStyleBackColor = true;\r
-            this.radio_preferredAudioAndSubs.CheckedChanged += new System.EventHandler(this.radio_preferredAudioAndSubs_CheckedChanged);\r
+            // groupBox3\r
+            // \r
+            this.groupBox3.Controls.Add(this.label48);\r
+            this.groupBox3.Font = new System.Drawing.Font("Tahoma", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));\r
+            this.groupBox3.Location = new System.Drawing.Point(6, 78);\r
+            this.groupBox3.Name = "groupBox3";\r
+            this.groupBox3.Size = new System.Drawing.Size(155, 90);\r
+            this.groupBox3.TabIndex = 105;\r
+            this.groupBox3.TabStop = false;\r
+            this.groupBox3.Text = "WARNING";\r
+            this.groupBox3.Visible = false;\r
+            // \r
+            // label48\r
+            // \r
+            this.label48.AutoSize = true;\r
+            this.label48.Font = new System.Drawing.Font("Tahoma", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));\r
+            this.label48.Location = new System.Drawing.Point(6, 19);\r
+            this.label48.Name = "label48";\r
+            this.label48.Size = new System.Drawing.Size(143, 56);\r
+            this.label48.TabIndex = 0;\r
+            this.label48.Text = "As long as the \r\nPreferred Language is \r\n\"Any\", the advanced \r\noptions are not av" +\r
+    "ailable.";\r
+            this.label48.TextAlign = System.Drawing.ContentAlignment.TopCenter;\r
+            // \r
+            // groupBox2\r
+            // \r
+            this.groupBox2.Controls.Add(this.tableLayoutPanel1);\r
+            this.groupBox2.Location = new System.Drawing.Point(0, 231);\r
+            this.groupBox2.Name = "groupBox2";\r
+            this.groupBox2.Size = new System.Drawing.Size(577, 120);\r
+            this.groupBox2.TabIndex = 104;\r
+            this.groupBox2.TabStop = false;\r
+            this.groupBox2.Text = "Add Automatically";\r
+            // \r
+            // tableLayoutPanel1\r
+            // \r
+            this.tableLayoutPanel1.ColumnCount = 3;\r
+            this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 51F));\r
+            this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 324F));\r
+            this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 239F));\r
+            this.tableLayoutPanel1.Controls.Add(this.tableLayoutPanel2, 1, 1);\r
+            this.tableLayoutPanel1.Controls.Add(this.label42, 0, 1);\r
+            this.tableLayoutPanel1.Controls.Add(this.label43, 0, 2);\r
+            this.tableLayoutPanel1.Controls.Add(this.check_AddCCTracks, 2, 2);\r
+            this.tableLayoutPanel1.Controls.Add(this.tableLayoutPanel4, 1, 0);\r
+            this.tableLayoutPanel1.Controls.Add(this.tableLayoutPanel3, 1, 2);\r
+            this.tableLayoutPanel1.Controls.Add(this.check_AddOnlyOneAudioPerLanguage, 2, 1);\r
+            this.tableLayoutPanel1.Location = new System.Drawing.Point(4, 16);\r
+            this.tableLayoutPanel1.Name = "tableLayoutPanel1";\r
+            this.tableLayoutPanel1.RowCount = 3;\r
+            this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));\r
+            this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));\r
+            this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));\r
+            this.tableLayoutPanel1.Size = new System.Drawing.Size(574, 73);\r
+            this.tableLayoutPanel1.TabIndex = 102;\r
+            // \r
+            // tableLayoutPanel2\r
+            // \r
+            this.tableLayoutPanel2.ColumnCount = 10;\r
+            this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 18F));\r
+            this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 36F));\r
+            this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 23F));\r
+            this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 42F));\r
+            this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 36F));\r
+            this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 32F));\r
+            this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 39F));\r
+            this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20F));\r
+            this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 36F));\r
+            this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 36F));\r
+            this.tableLayoutPanel2.Controls.Add(this.radio_Audio_Selected, 3, 0);\r
+            this.tableLayoutPanel2.Controls.Add(this.radio_Audio_None, 9, 0);\r
+            this.tableLayoutPanel2.Controls.Add(this.radio_Audio_PrefOnly, 5, 0);\r
+            this.tableLayoutPanel2.Controls.Add(this.radio_Audio_All, 1, 0);\r
+            this.tableLayoutPanel2.Controls.Add(this.radio_Audio_First, 7, 0);\r
+            this.tableLayoutPanel2.Location = new System.Drawing.Point(54, 23);\r
+            this.tableLayoutPanel2.Name = "tableLayoutPanel2";\r
+            this.tableLayoutPanel2.RowCount = 1;\r
+            this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));\r
+            this.tableLayoutPanel2.Size = new System.Drawing.Size(318, 20);\r
+            this.tableLayoutPanel2.TabIndex = 6;\r
+            // \r
+            // radio_Audio_Selected\r
+            // \r
+            this.radio_Audio_Selected.AutoSize = true;\r
+            this.radio_Audio_Selected.Location = new System.Drawing.Point(80, 3);\r
+            this.radio_Audio_Selected.Name = "radio_Audio_Selected";\r
+            this.radio_Audio_Selected.Size = new System.Drawing.Size(14, 13);\r
+            this.radio_Audio_Selected.TabIndex = 7;\r
+            this.radio_Audio_Selected.TabStop = true;\r
+            this.ToolTip.SetToolTip(this.radio_Audio_Selected, "Includes Prefered and Selected Languages");\r
+            this.radio_Audio_Selected.UseVisualStyleBackColor = true;\r
+            this.radio_Audio_Selected.CheckedChanged += new System.EventHandler(this.radio_Audio_Selected_CheckedChanged);\r
+            // \r
+            // radio_Audio_None\r
+            // \r
+            this.radio_Audio_None.AutoSize = true;\r
+            this.radio_Audio_None.Location = new System.Drawing.Point(285, 3);\r
+            this.radio_Audio_None.Name = "radio_Audio_None";\r
+            this.radio_Audio_None.Size = new System.Drawing.Size(14, 13);\r
+            this.radio_Audio_None.TabIndex = 10;\r
+            this.radio_Audio_None.TabStop = true;\r
+            this.ToolTip.SetToolTip(this.radio_Audio_None, "Do not add anything.");\r
+            this.radio_Audio_None.UseVisualStyleBackColor = true;\r
+            this.radio_Audio_None.CheckedChanged += new System.EventHandler(this.radio_Audio_None_CheckedChanged);\r
+            // \r
+            // radio_Audio_PrefOnly\r
+            // \r
+            this.radio_Audio_PrefOnly.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) \r
+            | System.Windows.Forms.AnchorStyles.Left) \r
+            | System.Windows.Forms.AnchorStyles.Right)));\r
+            this.radio_Audio_PrefOnly.AutoSize = true;\r
+            this.radio_Audio_PrefOnly.Checked = true;\r
+            this.radio_Audio_PrefOnly.Location = new System.Drawing.Point(158, 3);\r
+            this.radio_Audio_PrefOnly.Name = "radio_Audio_PrefOnly";\r
+            this.radio_Audio_PrefOnly.Size = new System.Drawing.Size(26, 14);\r
+            this.radio_Audio_PrefOnly.TabIndex = 6;\r
+            this.radio_Audio_PrefOnly.TabStop = true;\r
+            this.radio_Audio_PrefOnly.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;\r
+            this.ToolTip.SetToolTip(this.radio_Audio_PrefOnly, "Only the prefered language.");\r
+            this.radio_Audio_PrefOnly.UseVisualStyleBackColor = true;\r
+            this.radio_Audio_PrefOnly.CheckedChanged += new System.EventHandler(this.radio_Audio_PrefOnly_CheckedChanged);\r
+            // \r
+            // radio_Audio_All\r
+            // \r
+            this.radio_Audio_All.AutoSize = true;\r
+            this.radio_Audio_All.Location = new System.Drawing.Point(21, 3);\r
+            this.radio_Audio_All.Name = "radio_Audio_All";\r
+            this.radio_Audio_All.Size = new System.Drawing.Size(14, 13);\r
+            this.radio_Audio_All.TabIndex = 9;\r
+            this.radio_Audio_All.TabStop = true;\r
+            this.ToolTip.SetToolTip(this.radio_Audio_All, "All available languages.");\r
+            this.radio_Audio_All.UseVisualStyleBackColor = true;\r
+            this.radio_Audio_All.CheckedChanged += new System.EventHandler(this.radio_Audio_All_CheckedChanged);\r
+            // \r
+            // radio_Audio_First\r
+            // \r
+            this.radio_Audio_First.AutoSize = true;\r
+            this.radio_Audio_First.Location = new System.Drawing.Point(229, 3);\r
+            this.radio_Audio_First.Name = "radio_Audio_First";\r
+            this.radio_Audio_First.Size = new System.Drawing.Size(14, 13);\r
+            this.radio_Audio_First.TabIndex = 8;\r
+            this.radio_Audio_First.TabStop = true;\r
+            this.ToolTip.SetToolTip(this.radio_Audio_First, "Take the first language on the source.");\r
+            this.radio_Audio_First.UseVisualStyleBackColor = true;\r
+            this.radio_Audio_First.CheckedChanged += new System.EventHandler(this.radio_Audio_First_CheckedChanged);\r
+            // \r
+            // label42\r
+            // \r
+            this.label42.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) \r
+            | System.Windows.Forms.AnchorStyles.Right)));\r
+            this.label42.AutoSize = true;\r
+            this.label42.Location = new System.Drawing.Point(14, 20);\r
+            this.label42.Name = "label42";\r
+            this.label42.Size = new System.Drawing.Size(34, 26);\r
+            this.label42.TabIndex = 0;\r
+            this.label42.Text = "Audio";\r
+            this.label42.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;\r
+            // \r
+            // label43\r
+            // \r
+            this.label43.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) \r
+            | System.Windows.Forms.AnchorStyles.Right)));\r
+            this.label43.AutoSize = true;\r
+            this.label43.Location = new System.Drawing.Point(5, 46);\r
+            this.label43.Name = "label43";\r
+            this.label43.Size = new System.Drawing.Size(43, 27);\r
+            this.label43.TabIndex = 1;\r
+            this.label43.Text = "Subtitle";\r
+            this.label43.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;\r
             // \r
             // check_AddCCTracks\r
             // \r
             this.check_AddCCTracks.AutoSize = true;\r
-            this.check_AddCCTracks.Location = new System.Drawing.Point(200, 131);\r
+            this.check_AddCCTracks.Location = new System.Drawing.Point(378, 49);\r
             this.check_AddCCTracks.Name = "check_AddCCTracks";\r
-            this.check_AddCCTracks.Size = new System.Drawing.Size(198, 17);\r
+            this.check_AddCCTracks.Size = new System.Drawing.Size(199, 17);\r
             this.check_AddCCTracks.TabIndex = 92;\r
             this.check_AddCCTracks.Text = "Add Closed Captions when available";\r
             this.ToolTip.SetToolTip(this.check_AddCCTracks, "Add any CC tracks if they exist");\r
             this.check_AddCCTracks.UseVisualStyleBackColor = true;\r
             this.check_AddCCTracks.CheckedChanged += new System.EventHandler(this.check_AddCCTracks_CheckedChanged);\r
             // \r
+            // tableLayoutPanel4\r
+            // \r
+            this.tableLayoutPanel4.ColumnCount = 9;\r
+            this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 16.98113F));\r
+            this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 1.702191F));\r
+            this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 18.55346F));\r
+            this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 1.702191F));\r
+            this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 26.41509F));\r
+            this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 1.702191F));\r
+            this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 15.72405F));\r
+            this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 1.702191F));\r
+            this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 15.31972F));\r
+            this.tableLayoutPanel4.Controls.Add(this.label45, 2, 0);\r
+            this.tableLayoutPanel4.Controls.Add(this.label41, 8, 0);\r
+            this.tableLayoutPanel4.Controls.Add(this.label47, 0, 0);\r
+            this.tableLayoutPanel4.Controls.Add(this.label46, 6, 0);\r
+            this.tableLayoutPanel4.Controls.Add(this.label44, 4, 0);\r
+            this.tableLayoutPanel4.Location = new System.Drawing.Point(54, 3);\r
+            this.tableLayoutPanel4.Name = "tableLayoutPanel4";\r
+            this.tableLayoutPanel4.RowCount = 1;\r
+            this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));\r
+            this.tableLayoutPanel4.Size = new System.Drawing.Size(318, 14);\r
+            this.tableLayoutPanel4.TabIndex = 4;\r
+            // \r
+            // label45\r
+            // \r
+            this.label45.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) \r
+            | System.Windows.Forms.AnchorStyles.Right)));\r
+            this.label45.AutoSize = true;\r
+            this.label45.Location = new System.Drawing.Point(62, 1);\r
+            this.label45.Name = "label45";\r
+            this.label45.Size = new System.Drawing.Size(53, 13);\r
+            this.label45.TabIndex = 3;\r
+            this.label45.Text = "Selected";\r
+            this.label45.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;\r
+            this.ToolTip.SetToolTip(this.label45, "Includes Prefered and Selected Languages");\r
+            // \r
+            // label41\r
+            // \r
+            this.label41.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) \r
+            | System.Windows.Forms.AnchorStyles.Right)));\r
+            this.label41.AutoSize = true;\r
+            this.label41.Location = new System.Drawing.Point(270, 1);\r
+            this.label41.Name = "label41";\r
+            this.label41.Size = new System.Drawing.Size(45, 13);\r
+            this.label41.TabIndex = 6;\r
+            this.label41.Text = "None";\r
+            this.label41.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;\r
+            this.ToolTip.SetToolTip(this.label41, "Do not add anything.");\r
+            // \r
+            // label47\r
+            // \r
+            this.label47.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) \r
+            | System.Windows.Forms.AnchorStyles.Right)));\r
+            this.label47.AutoSize = true;\r
+            this.label47.Location = new System.Drawing.Point(3, 1);\r
+            this.label47.Name = "label47";\r
+            this.label47.Size = new System.Drawing.Size(48, 13);\r
+            this.label47.TabIndex = 5;\r
+            this.label47.Text = "All";\r
+            this.label47.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;\r
+            this.ToolTip.SetToolTip(this.label47, "All available languages.");\r
+            // \r
+            // label46\r
+            // \r
+            this.label46.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) \r
+            | System.Windows.Forms.AnchorStyles.Right)));\r
+            this.label46.AutoSize = true;\r
+            this.label46.Location = new System.Drawing.Point(215, 1);\r
+            this.label46.Name = "label46";\r
+            this.label46.Size = new System.Drawing.Size(44, 13);\r
+            this.label46.TabIndex = 4;\r
+            this.label46.Text = "First";\r
+            this.label46.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;\r
+            this.ToolTip.SetToolTip(this.label46, "Take the first language on the source.");\r
+            // \r
+            // label44\r
+            // \r
+            this.label44.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) \r
+            | System.Windows.Forms.AnchorStyles.Right)));\r
+            this.label44.AutoSize = true;\r
+            this.label44.Location = new System.Drawing.Point(126, 1);\r
+            this.label44.Name = "label44";\r
+            this.label44.Size = new System.Drawing.Size(78, 13);\r
+            this.label44.TabIndex = 2;\r
+            this.label44.Text = "Only Prefered";\r
+            this.label44.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;\r
+            this.ToolTip.SetToolTip(this.label44, "Only the prefered language.");\r
+            // \r
+            // tableLayoutPanel3\r
+            // \r
+            this.tableLayoutPanel3.ColumnCount = 10;\r
+            this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 18F));\r
+            this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 36F));\r
+            this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 22F));\r
+            this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 43F));\r
+            this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 36F));\r
+            this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 33F));\r
+            this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 38F));\r
+            this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 22F));\r
+            this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 34F));\r
+            this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 36F));\r
+            this.tableLayoutPanel3.Controls.Add(this.radio_Subtitle_Selected, 3, 0);\r
+            this.tableLayoutPanel3.Controls.Add(this.radio_Subtitle_None, 9, 0);\r
+            this.tableLayoutPanel3.Controls.Add(this.radio_Subtitle_PrefOnly, 5, 0);\r
+            this.tableLayoutPanel3.Controls.Add(this.radio_Subtitle_All, 1, 0);\r
+            this.tableLayoutPanel3.Controls.Add(this.radio_Subtitle_First, 7, 0);\r
+            this.tableLayoutPanel3.Location = new System.Drawing.Point(54, 49);\r
+            this.tableLayoutPanel3.Name = "tableLayoutPanel3";\r
+            this.tableLayoutPanel3.RowCount = 1;\r
+            this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));\r
+            this.tableLayoutPanel3.Size = new System.Drawing.Size(318, 20);\r
+            this.tableLayoutPanel3.TabIndex = 7;\r
+            // \r
+            // radio_Subtitle_Selected\r
+            // \r
+            this.radio_Subtitle_Selected.AutoSize = true;\r
+            this.radio_Subtitle_Selected.Location = new System.Drawing.Point(79, 3);\r
+            this.radio_Subtitle_Selected.Name = "radio_Subtitle_Selected";\r
+            this.radio_Subtitle_Selected.Size = new System.Drawing.Size(14, 13);\r
+            this.radio_Subtitle_Selected.TabIndex = 7;\r
+            this.radio_Subtitle_Selected.TabStop = true;\r
+            this.ToolTip.SetToolTip(this.radio_Subtitle_Selected, "Includes Prefered and Selected Languages");\r
+            this.radio_Subtitle_Selected.UseVisualStyleBackColor = true;\r
+            this.radio_Subtitle_Selected.CheckedChanged += new System.EventHandler(this.radio_Subtitle_Selected_CheckedChanged);\r
+            // \r
+            // radio_Subtitle_None\r
+            // \r
+            this.radio_Subtitle_None.AutoSize = true;\r
+            this.radio_Subtitle_None.Location = new System.Drawing.Point(285, 3);\r
+            this.radio_Subtitle_None.Name = "radio_Subtitle_None";\r
+            this.radio_Subtitle_None.Size = new System.Drawing.Size(14, 13);\r
+            this.radio_Subtitle_None.TabIndex = 10;\r
+            this.radio_Subtitle_None.TabStop = true;\r
+            this.ToolTip.SetToolTip(this.radio_Subtitle_None, "Do not add anything.");\r
+            this.radio_Subtitle_None.UseVisualStyleBackColor = true;\r
+            this.radio_Subtitle_None.CheckedChanged += new System.EventHandler(this.radio_Subtitle_None_CheckedChanged);\r
+            // \r
+            // radio_Subtitle_PrefOnly\r
+            // \r
+            this.radio_Subtitle_PrefOnly.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) \r
+            | System.Windows.Forms.AnchorStyles.Left) \r
+            | System.Windows.Forms.AnchorStyles.Right)));\r
+            this.radio_Subtitle_PrefOnly.AutoSize = true;\r
+            this.radio_Subtitle_PrefOnly.Checked = true;\r
+            this.radio_Subtitle_PrefOnly.Location = new System.Drawing.Point(158, 3);\r
+            this.radio_Subtitle_PrefOnly.Name = "radio_Subtitle_PrefOnly";\r
+            this.radio_Subtitle_PrefOnly.Size = new System.Drawing.Size(27, 14);\r
+            this.radio_Subtitle_PrefOnly.TabIndex = 6;\r
+            this.radio_Subtitle_PrefOnly.TabStop = true;\r
+            this.radio_Subtitle_PrefOnly.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;\r
+            this.ToolTip.SetToolTip(this.radio_Subtitle_PrefOnly, "Only the prefered language.");\r
+            this.radio_Subtitle_PrefOnly.UseVisualStyleBackColor = true;\r
+            this.radio_Subtitle_PrefOnly.CheckedChanged += new System.EventHandler(this.radio_Subtitle_PrefOnly_CheckedChanged);\r
+            // \r
+            // radio_Subtitle_All\r
+            // \r
+            this.radio_Subtitle_All.AutoSize = true;\r
+            this.radio_Subtitle_All.Location = new System.Drawing.Point(21, 3);\r
+            this.radio_Subtitle_All.Name = "radio_Subtitle_All";\r
+            this.radio_Subtitle_All.Size = new System.Drawing.Size(14, 13);\r
+            this.radio_Subtitle_All.TabIndex = 9;\r
+            this.radio_Subtitle_All.TabStop = true;\r
+            this.ToolTip.SetToolTip(this.radio_Subtitle_All, "All available languages.");\r
+            this.radio_Subtitle_All.UseVisualStyleBackColor = true;\r
+            this.radio_Subtitle_All.CheckedChanged += new System.EventHandler(this.radio_Subtitle_All_CheckedChanged);\r
+            // \r
+            // radio_Subtitle_First\r
+            // \r
+            this.radio_Subtitle_First.AutoSize = true;\r
+            this.radio_Subtitle_First.Location = new System.Drawing.Point(229, 3);\r
+            this.radio_Subtitle_First.Name = "radio_Subtitle_First";\r
+            this.radio_Subtitle_First.Size = new System.Drawing.Size(14, 13);\r
+            this.radio_Subtitle_First.TabIndex = 8;\r
+            this.radio_Subtitle_First.TabStop = true;\r
+            this.ToolTip.SetToolTip(this.radio_Subtitle_First, "Take the first language on the source.");\r
+            this.radio_Subtitle_First.UseVisualStyleBackColor = true;\r
+            this.radio_Subtitle_First.CheckedChanged += new System.EventHandler(this.radio_Subtitle_First_CheckedChanged);\r
+            // \r
+            // check_AddOnlyOneAudioPerLanguage\r
+            // \r
+            this.check_AddOnlyOneAudioPerLanguage.AutoSize = true;\r
+            this.check_AddOnlyOneAudioPerLanguage.Location = new System.Drawing.Point(378, 23);\r
+            this.check_AddOnlyOneAudioPerLanguage.Name = "check_AddOnlyOneAudioPerLanguage";\r
+            this.check_AddOnlyOneAudioPerLanguage.Size = new System.Drawing.Size(192, 17);\r
+            this.check_AddOnlyOneAudioPerLanguage.TabIndex = 93;\r
+            this.check_AddOnlyOneAudioPerLanguage.Text = "Add Only One Audio Per Language";\r
+            this.ToolTip.SetToolTip(this.check_AddOnlyOneAudioPerLanguage, "Only add one audiotrack of each selected language.");\r
+            this.check_AddOnlyOneAudioPerLanguage.UseVisualStyleBackColor = true;\r
+            this.check_AddOnlyOneAudioPerLanguage.CheckedChanged += new System.EventHandler(this.check_AddOnlyOneAudioPerLanguage_CheckedChanged);\r
+            // \r
+            // groupBox1\r
+            // \r
+            this.groupBox1.Controls.Add(this.panel3);\r
+            this.groupBox1.Location = new System.Drawing.Point(167, 15);\r
+            this.groupBox1.Name = "groupBox1";\r
+            this.groupBox1.Size = new System.Drawing.Size(389, 210);\r
+            this.groupBox1.TabIndex = 103;\r
+            this.groupBox1.TabStop = false;\r
+            this.groupBox1.Text = "Additional Languages";\r
+            // \r
+            // panel3\r
+            // \r
+            this.panel3.Controls.Add(this.button_moveLanguageDown);\r
+            this.panel3.Controls.Add(this.button_moveLanguageUp);\r
+            this.panel3.Controls.Add(this.label40);\r
+            this.panel3.Controls.Add(this.label39);\r
+            this.panel3.Controls.Add(this.button_clearLanguage);\r
+            this.panel3.Controls.Add(this.button_removeLanguage);\r
+            this.panel3.Controls.Add(this.button_addLanguage);\r
+            this.panel3.Controls.Add(this.listBox_selectedLanguages);\r
+            this.panel3.Controls.Add(this.listBox_availableLanguages);\r
+            this.panel3.Location = new System.Drawing.Point(6, 15);\r
+            this.panel3.Name = "panel3";\r
+            this.panel3.Size = new System.Drawing.Size(377, 189);\r
+            this.panel3.TabIndex = 101;\r
+            // \r
+            // button_moveLanguageDown\r
+            // \r
+            this.button_moveLanguageDown.Image = global::Handbrake.Properties.Resources.arrow_down;\r
+            this.button_moveLanguageDown.Location = new System.Drawing.Point(348, 98);\r
+            this.button_moveLanguageDown.Name = "button_moveLanguageDown";\r
+            this.button_moveLanguageDown.Size = new System.Drawing.Size(25, 27);\r
+            this.button_moveLanguageDown.TabIndex = 102;\r
+            this.ToolTip.SetToolTip(this.button_moveLanguageDown, "Move selected languages down in the order.");\r
+            this.button_moveLanguageDown.UseVisualStyleBackColor = true;\r
+            this.button_moveLanguageDown.Click += new System.EventHandler(this.button_moveLanguageDown_Click);\r
+            // \r
+            // button_moveLanguageUp\r
+            // \r
+            this.button_moveLanguageUp.Image = global::Handbrake.Properties.Resources.arrow_up;\r
+            this.button_moveLanguageUp.Location = new System.Drawing.Point(348, 65);\r
+            this.button_moveLanguageUp.Name = "button_moveLanguageUp";\r
+            this.button_moveLanguageUp.Size = new System.Drawing.Size(25, 27);\r
+            this.button_moveLanguageUp.TabIndex = 101;\r
+            this.ToolTip.SetToolTip(this.button_moveLanguageUp, "Move selected languages up in the order.");\r
+            this.button_moveLanguageUp.UseVisualStyleBackColor = true;\r
+            this.button_moveLanguageUp.Click += new System.EventHandler(this.button_moveLanguageUp_Click);\r
+            // \r
+            // label40\r
+            // \r
+            this.label40.AutoSize = true;\r
+            this.label40.Location = new System.Drawing.Point(205, 7);\r
+            this.label40.Name = "label40";\r
+            this.label40.Size = new System.Drawing.Size(103, 13);\r
+            this.label40.TabIndex = 100;\r
+            this.label40.Text = "Selected Languages";\r
+            // \r
+            // label39\r
+            // \r
+            this.label39.AutoSize = true;\r
+            this.label39.Location = new System.Drawing.Point(7, 7);\r
+            this.label39.Name = "label39";\r
+            this.label39.Size = new System.Drawing.Size(105, 13);\r
+            this.label39.TabIndex = 99;\r
+            this.label39.Text = "Available Languages";\r
+            // \r
+            // button_clearLanguage\r
+            // \r
+            this.button_clearLanguage.Location = new System.Drawing.Point(153, 155);\r
+            this.button_clearLanguage.Name = "button_clearLanguage";\r
+            this.button_clearLanguage.Size = new System.Drawing.Size(49, 28);\r
+            this.button_clearLanguage.TabIndex = 98;\r
+            this.button_clearLanguage.Text = "Clear";\r
+            this.ToolTip.SetToolTip(this.button_clearLanguage, "Clear the list of selected languages.");\r
+            this.button_clearLanguage.UseVisualStyleBackColor = true;\r
+            this.button_clearLanguage.Click += new System.EventHandler(this.button_clearLanguage_Click);\r
+            // \r
+            // button_removeLanguage\r
+            // \r
+            this.button_removeLanguage.Image = global::Handbrake.Properties.Resources.arrow_left;\r
+            this.button_removeLanguage.Location = new System.Drawing.Point(153, 99);\r
+            this.button_removeLanguage.Name = "button_removeLanguage";\r
+            this.button_removeLanguage.Size = new System.Drawing.Size(49, 28);\r
+            this.button_removeLanguage.TabIndex = 97;\r
+            this.ToolTip.SetToolTip(this.button_removeLanguage, "Remove language from selected languages.");\r
+            this.button_removeLanguage.UseVisualStyleBackColor = true;\r
+            this.button_removeLanguage.Click += new System.EventHandler(this.button_removeLanguage_Click);\r
+            // \r
+            // button_addLanguage\r
+            // \r
+            this.button_addLanguage.Image = global::Handbrake.Properties.Resources.arrow_right;\r
+            this.button_addLanguage.Location = new System.Drawing.Point(153, 65);\r
+            this.button_addLanguage.Name = "button_addLanguage";\r
+            this.button_addLanguage.Size = new System.Drawing.Size(49, 28);\r
+            this.button_addLanguage.TabIndex = 96;\r
+            this.ToolTip.SetToolTip(this.button_addLanguage, "Add Language to selected languages.");\r
+            this.button_addLanguage.UseVisualStyleBackColor = true;\r
+            this.button_addLanguage.Click += new System.EventHandler(this.button_addLanguage_Click);\r
+            // \r
+            // listBox_selectedLanguages\r
+            // \r
+            this.listBox_selectedLanguages.FormattingEnabled = true;\r
+            this.listBox_selectedLanguages.Location = new System.Drawing.Point(208, 23);\r
+            this.listBox_selectedLanguages.Name = "listBox_selectedLanguages";\r
+            this.listBox_selectedLanguages.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended;\r
+            this.listBox_selectedLanguages.Size = new System.Drawing.Size(137, 160);\r
+            this.listBox_selectedLanguages.TabIndex = 95;\r
+            this.listBox_selectedLanguages.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.listBox_selectedLanguages_MouseDoubleClick);\r
+            // \r
+            // listBox_availableLanguages\r
+            // \r
+            this.listBox_availableLanguages.FormattingEnabled = true;\r
+            this.listBox_availableLanguages.Location = new System.Drawing.Point(10, 23);\r
+            this.listBox_availableLanguages.Name = "listBox_availableLanguages";\r
+            this.listBox_availableLanguages.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended;\r
+            this.listBox_availableLanguages.Size = new System.Drawing.Size(137, 160);\r
+            this.listBox_availableLanguages.Sorted = true;\r
+            this.listBox_availableLanguages.TabIndex = 94;\r
+            this.listBox_availableLanguages.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.listBox_availableLanguages_MouseDoubleClick);\r
+            // \r
             // label31\r
             // \r
             this.label31.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));\r
             this.label31.AutoSize = true;\r
             this.label31.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));\r
-            this.label31.Location = new System.Drawing.Point(16, 19);\r
+            this.label31.Location = new System.Drawing.Point(16, 8);\r
             this.label31.Margin = new System.Windows.Forms.Padding(3, 5, 3, 0);\r
             this.label31.Name = "label31";\r
             this.label31.Size = new System.Drawing.Size(52, 13);\r
@@ -659,51 +1167,24 @@ namespace Handbrake
             // label15\r
             // \r
             this.label15.AutoSize = true;\r
-            this.label15.Location = new System.Drawing.Point(87, 19);\r
+            this.label15.Location = new System.Drawing.Point(16, 35);\r
             this.label15.Name = "label15";\r
             this.label15.Size = new System.Drawing.Size(107, 13);\r
             this.label15.TabIndex = 88;\r
             this.label15.Text = "Preferred Language:";\r
             // \r
-            // radio_foreignAndSubs\r
-            // \r
-            this.radio_foreignAndSubs.AutoSize = true;\r
-            this.radio_foreignAndSubs.Location = new System.Drawing.Point(200, 76);\r
-            this.radio_foreignAndSubs.Name = "radio_foreignAndSubs";\r
-            this.radio_foreignAndSubs.Size = new System.Drawing.Size(347, 17);\r
-            this.radio_foreignAndSubs.TabIndex = 90;\r
-            this.radio_foreignAndSubs.TabStop = true;\r
-            this.radio_foreignAndSubs.Text = "Use foreign language audio and add first preferred language subtitle.";\r
-            this.ToolTip.SetToolTip(this.radio_foreignAndSubs, "Use foreign language audio and add first subtitle track of prefered language.\r\n");\r
-            this.radio_foreignAndSubs.UseVisualStyleBackColor = true;\r
-            this.radio_foreignAndSubs.CheckedChanged += new System.EventHandler(this.radio_foreignAndSubs_CheckedChanged);\r
-            // \r
             // drop_preferredLang\r
             // \r
             this.drop_preferredLang.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;\r
             this.drop_preferredLang.FormattingEnabled = true;\r
-            this.drop_preferredLang.Location = new System.Drawing.Point(200, 16);\r
+            this.drop_preferredLang.Location = new System.Drawing.Point(19, 51);\r
             this.drop_preferredLang.Name = "drop_preferredLang";\r
             this.drop_preferredLang.Size = new System.Drawing.Size(118, 21);\r
             this.drop_preferredLang.TabIndex = 87;\r
             this.ToolTip.SetToolTip(this.drop_preferredLang, "The number of processor\'s / processor cores. Unless your having problems, leave o" +\r
-                    "n Automatic.");\r
+        "n Automatic.");\r
             this.drop_preferredLang.SelectedIndexChanged += new System.EventHandler(this.drop_preferredLang_SelectedIndexChanged);\r
             // \r
-            // radio_dub\r
-            // \r
-            this.radio_dub.AutoSize = true;\r
-            this.radio_dub.Location = new System.Drawing.Point(200, 53);\r
-            this.radio_dub.Name = "radio_dub";\r
-            this.radio_dub.Size = new System.Drawing.Size(167, 17);\r
-            this.radio_dub.TabIndex = 89;\r
-            this.radio_dub.TabStop = true;\r
-            this.radio_dub.Text = "DUB Foreign Language Audio";\r
-            this.ToolTip.SetToolTip(this.radio_dub, "This option will select your prefered language of audio for the source if one exi" +\r
-                    "sts.");\r
-            this.radio_dub.UseVisualStyleBackColor = true;\r
-            this.radio_dub.CheckedChanged += new System.EventHandler(this.radio_dub_CheckedChanged);\r
-            // \r
             // tab_cli\r
             // \r
             this.tab_cli.Controls.Add(this.label11);\r
@@ -765,7 +1246,7 @@ namespace Handbrake
             this.check_clearOldLogs.TabIndex = 90;\r
             this.check_clearOldLogs.Text = "Clear logs older than 30 days";\r
             this.ToolTip.SetToolTip(this.check_clearOldLogs, "Clear logs which are older than 30 days.\r\nThis only applies to HandBrakes Applica" +\r
-                    "tion Data Log folder.");\r
+        "tion Data Log folder.");\r
             this.check_clearOldLogs.UseVisualStyleBackColor = true;\r
             this.check_clearOldLogs.CheckedChanged += new System.EventHandler(this.check_clearOldLogs_CheckedChanged);\r
             // \r
@@ -847,7 +1328,7 @@ namespace Handbrake
             this.drp_Priority.Size = new System.Drawing.Size(111, 21);\r
             this.drp_Priority.TabIndex = 43;\r
             this.ToolTip.SetToolTip(this.drp_Priority, "Set the application priority level for the CLI. \r\nIt\'s best to leave this on Belo" +\r
-                    "w Normal if you wish to use your system whilst encoding with HandBrake.\r\n");\r
+        "w Normal if you wish to use your system whilst encoding with HandBrake.\r\n");\r
             this.drp_Priority.SelectedIndexChanged += new System.EventHandler(this.drp_Priority_SelectedIndexChanged);\r
             // \r
             // check_logsInSpecifiedLocation\r
@@ -990,7 +1471,7 @@ namespace Handbrake
             this.drop_previewScanCount.Size = new System.Drawing.Size(85, 21);\r
             this.drop_previewScanCount.TabIndex = 95;\r
             this.ToolTip.SetToolTip(this.drop_previewScanCount, "Allows a greater number of preview frames to be selectable on the \"Preview\" windo" +\r
-                    "w.\r\n\r\nThis can in some cases improve the accuracy of the auto crop feature.");\r
+        "w.\r\n\r\nThis can in some cases improve the accuracy of the auto crop feature.");\r
             this.drop_previewScanCount.SelectedIndexChanged += new System.EventHandler(this.drop_previewScanCount_SelectedIndexChanged);\r
             // \r
             // label33\r
@@ -1026,8 +1507,8 @@ namespace Handbrake
             this.check_trayStatusAlerts.TabIndex = 93;\r
             this.check_trayStatusAlerts.Text = "Display status messages from tray icon (balloon popups)";\r
             this.ToolTip.SetToolTip(this.check_trayStatusAlerts, "Minimize the window to the system tray rather than the task bar.\r\nThe system tray" +\r
-                    " icon has encode status notifications.\r\nNote: requires restart to take effect!\r\n" +\r
-                    "");\r
+        " icon has encode status notifications.\r\nNote: requires restart to take effect!\r\n" +\r
+        "");\r
             this.check_trayStatusAlerts.UseVisualStyleBackColor = false;\r
             this.check_trayStatusAlerts.CheckedChanged += new System.EventHandler(this.check_trayStatusAlerts_CheckedChanged);\r
             // \r
@@ -1042,8 +1523,8 @@ namespace Handbrake
             this.check_mainMinimize.TabIndex = 82;\r
             this.check_mainMinimize.Text = "Minimize to system tray (Requires Restart)";\r
             this.ToolTip.SetToolTip(this.check_mainMinimize, "Minimize the window to the system tray rather than the task bar.\r\nThe system tray" +\r
-                    " icon has encode status notifications.\r\nNote: requires restart to take effect!\r\n" +\r
-                    "");\r
+        " icon has encode status notifications.\r\nNote: requires restart to take effect!\r\n" +\r
+        "");\r
             this.check_mainMinimize.UseVisualStyleBackColor = false;\r
             this.check_mainMinimize.CheckedChanged += new System.EventHandler(this.check_mainMinimize_CheckedChanged);\r
             // \r
@@ -1082,7 +1563,7 @@ namespace Handbrake
             this.check_queryEditorTab.TabIndex = 84;\r
             this.check_queryEditorTab.Text = "Enable \"Query Editor\" tab (Requires Restart)";\r
             this.ToolTip.SetToolTip(this.check_queryEditorTab, "Enables the Query Editor tab on the main window. Requires program restart to take" +\r
-                    " effect.");\r
+        " effect.");\r
             this.check_queryEditorTab.UseVisualStyleBackColor = false;\r
             this.check_queryEditorTab.CheckedChanged += new System.EventHandler(this.check_queryEditorTab_CheckedChanged);\r
             // \r
@@ -1134,7 +1615,7 @@ namespace Handbrake
             this.check_disablePresetNotification.TabIndex = 91;\r
             this.check_disablePresetNotification.Text = "Disable built-in preset update notification";\r
             this.ToolTip.SetToolTip(this.check_disablePresetNotification, "Disables the notification you recieve when presets are updated when a new version" +\r
-                    " of HandBrake is installed.");\r
+        " of HandBrake is installed.");\r
             this.check_disablePresetNotification.UseVisualStyleBackColor = false;\r
             this.check_disablePresetNotification.CheckedChanged += new System.EventHandler(this.check_disablePresetNotification_CheckedChanged);\r
             // \r
@@ -1159,16 +1640,6 @@ namespace Handbrake
             this.label8.TabIndex = 61;\r
             this.label8.Text = "Options";\r
             // \r
-            // pictureBox2\r
-            // \r
-            this.pictureBox2.Image = global::Handbrake.Properties.Resources.General_Preferences;\r
-            this.pictureBox2.Location = new System.Drawing.Point(12, 9);\r
-            this.pictureBox2.Margin = new System.Windows.Forms.Padding(3, 0, 3, 3);\r
-            this.pictureBox2.Name = "pictureBox2";\r
-            this.pictureBox2.Size = new System.Drawing.Size(32, 32);\r
-            this.pictureBox2.TabIndex = 60;\r
-            this.pictureBox2.TabStop = false;\r
-            // \r
             // ToolTip\r
             // \r
             this.ToolTip.Active = false;\r
@@ -1186,8 +1657,8 @@ namespace Handbrake
             this.textBox1.Size = new System.Drawing.Size(255, 20);\r
             this.textBox1.TabIndex = 79;\r
             this.ToolTip.SetToolTip(this.textBox1, "Define the format of the automatically named file.\r\ne.g  {source}_{title}_some-te" +\r
-                    "xt\r\n{source} {title} {chapters} will be automatically substituted for the input " +\r
-                    "sources values.");\r
+        "xt\r\n{source} {title} {chapters} will be automatically substituted for the input " +\r
+        "sources values.");\r
             // \r
             // textBox2\r
             // \r
@@ -1233,7 +1704,7 @@ namespace Handbrake
             this.checkBox3.TabIndex = 68;\r
             this.checkBox3.Text = "Check for updates";\r
             this.ToolTip.SetToolTip(this.checkBox3, "Enables the built in update checker. This check is performed when the application" +\r
-                    " starts.");\r
+        " starts.");\r
             this.checkBox3.UseVisualStyleBackColor = false;\r
             // \r
             // checkBox4\r
@@ -1275,8 +1746,8 @@ namespace Handbrake
             this.textBox3.Size = new System.Drawing.Size(255, 20);\r
             this.textBox3.TabIndex = 79;\r
             this.ToolTip.SetToolTip(this.textBox3, "Define the format of the automatically named file.\r\ne.g  {source}_{title}_some-te" +\r
-                    "xt\r\n{source} {title} {chapters} will be automatically substituted for the input " +\r
-                    "sources values.");\r
+        "xt\r\n{source} {title} {chapters} will be automatically substituted for the input " +\r
+        "sources values.");\r
             // \r
             // textBox4\r
             // \r
@@ -1322,7 +1793,7 @@ namespace Handbrake
             this.checkBox7.TabIndex = 68;\r
             this.checkBox7.Text = "Check for updates";\r
             this.ToolTip.SetToolTip(this.checkBox7, "Enables the built in update checker. This check is performed when the application" +\r
-                    " starts.");\r
+        " starts.");\r
             this.checkBox7.UseVisualStyleBackColor = false;\r
             // \r
             // checkBox8\r
@@ -1543,6 +2014,16 @@ namespace Handbrake
             this.panel2.Size = new System.Drawing.Size(614, 10);\r
             this.panel2.TabIndex = 59;\r
             // \r
+            // pictureBox2\r
+            // \r
+            this.pictureBox2.Image = global::Handbrake.Properties.Resources.General_Preferences;\r
+            this.pictureBox2.Location = new System.Drawing.Point(12, 9);\r
+            this.pictureBox2.Margin = new System.Windows.Forms.Padding(3, 0, 3, 3);\r
+            this.pictureBox2.Name = "pictureBox2";\r
+            this.pictureBox2.Size = new System.Drawing.Size(32, 32);\r
+            this.pictureBox2.TabIndex = 60;\r
+            this.pictureBox2.TabStop = false;\r
+            // \r
             // frmOptions\r
             // \r
             this.AcceptButton = this.btn_close;\r
@@ -1573,13 +2054,27 @@ namespace Handbrake
             this.tab_picture.PerformLayout();\r
             this.tab_audio_sub.ResumeLayout(false);\r
             this.tab_audio_sub.PerformLayout();\r
+            this.groupBox3.ResumeLayout(false);\r
+            this.groupBox3.PerformLayout();\r
+            this.groupBox2.ResumeLayout(false);\r
+            this.tableLayoutPanel1.ResumeLayout(false);\r
+            this.tableLayoutPanel1.PerformLayout();\r
+            this.tableLayoutPanel2.ResumeLayout(false);\r
+            this.tableLayoutPanel2.PerformLayout();\r
+            this.tableLayoutPanel4.ResumeLayout(false);\r
+            this.tableLayoutPanel4.PerformLayout();\r
+            this.tableLayoutPanel3.ResumeLayout(false);\r
+            this.tableLayoutPanel3.PerformLayout();\r
+            this.groupBox1.ResumeLayout(false);\r
+            this.panel3.ResumeLayout(false);\r
+            this.panel3.PerformLayout();\r
             this.tab_cli.ResumeLayout(false);\r
             this.tab_cli.PerformLayout();\r
             this.tab_advanced.ResumeLayout(false);\r
             this.tab_advanced.PerformLayout();\r
-            ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit();\r
             this.panel1.ResumeLayout(false);\r
             this.panel1.PerformLayout();\r
+            ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit();\r
             this.ResumeLayout(false);\r
 \r
         }\r
@@ -1668,8 +2163,6 @@ namespace Handbrake
         private System.Windows.Forms.TabPage tab_audio_sub;\r
         internal System.Windows.Forms.ComboBox drop_preferredLang;\r
         private System.Windows.Forms.Label label31;\r
-        private System.Windows.Forms.RadioButton radio_foreignAndSubs;\r
-        private System.Windows.Forms.RadioButton radio_dub;\r
         private System.Windows.Forms.Label label15;\r
         internal System.Windows.Forms.Button btn_browse;\r
         internal System.Windows.Forms.CheckBox check_growlEncode;\r
@@ -1684,7 +2177,6 @@ namespace Handbrake
         private System.Windows.Forms.Label label11;\r
         private System.Windows.Forms.Panel panel1;\r
         private System.Windows.Forms.Panel panel2;\r
-        private System.Windows.Forms.RadioButton radio_preferredAudioAndSubs;\r
         private System.Windows.Forms.CheckBox check_AddCCTracks;\r
         private System.Windows.Forms.Label label34;\r
         internal System.Windows.Forms.Label label35;\r
@@ -1697,5 +2189,41 @@ namespace Handbrake
         private System.Windows.Forms.TabPage tab_outputFiles;\r
         private System.Windows.Forms.Label label38;\r
         private System.Windows.Forms.TextBox txt_SendFileArgs;\r
+        private System.Windows.Forms.Panel panel3;\r
+        private System.Windows.Forms.Label label40;\r
+        private System.Windows.Forms.Label label39;\r
+        private System.Windows.Forms.Button button_clearLanguage;\r
+        private System.Windows.Forms.Button button_removeLanguage;\r
+        private System.Windows.Forms.Button button_addLanguage;\r
+        private System.Windows.Forms.ListBox listBox_selectedLanguages;\r
+        private System.Windows.Forms.ListBox listBox_availableLanguages;\r
+        private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;\r
+        private System.Windows.Forms.Label label42;\r
+        private System.Windows.Forms.Label label43;\r
+        private System.Windows.Forms.Label label44;\r
+        private System.Windows.Forms.Label label45;\r
+        private System.Windows.Forms.Label label46;\r
+        private System.Windows.Forms.Label label47;\r
+        private System.Windows.Forms.RadioButton radio_Audio_PrefOnly;\r
+        private System.Windows.Forms.GroupBox groupBox1;\r
+        private System.Windows.Forms.TableLayoutPanel tableLayoutPanel4;\r
+        private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2;\r
+        private System.Windows.Forms.RadioButton radio_Audio_Selected;\r
+        private System.Windows.Forms.RadioButton radio_Audio_First;\r
+        private System.Windows.Forms.RadioButton radio_Audio_All;\r
+        private System.Windows.Forms.TableLayoutPanel tableLayoutPanel3;\r
+        private System.Windows.Forms.RadioButton radio_Subtitle_PrefOnly;\r
+        private System.Windows.Forms.RadioButton radio_Subtitle_Selected;\r
+        private System.Windows.Forms.RadioButton radio_Subtitle_First;\r
+        private System.Windows.Forms.RadioButton radio_Subtitle_All;\r
+        private System.Windows.Forms.CheckBox check_AddOnlyOneAudioPerLanguage;\r
+        private System.Windows.Forms.GroupBox groupBox2;\r
+        private System.Windows.Forms.RadioButton radio_Audio_None;\r
+        private System.Windows.Forms.Label label41;\r
+        private System.Windows.Forms.RadioButton radio_Subtitle_None;\r
+        private System.Windows.Forms.Button button_moveLanguageUp;\r
+        private System.Windows.Forms.Button button_moveLanguageDown;\r
+        private System.Windows.Forms.GroupBox groupBox3;\r
+        private System.Windows.Forms.Label label48;\r
     }\r
 }
\ No newline at end of file
index a0753cfccab15e104aa1734e6f8c53a13d1129b4..b216b9d2eaf395273c7edf74075f9effae062dae 100644 (file)
@@ -35,9 +35,25 @@ namespace Handbrake
             mainWindow = mw;\r
 \r
             IDictionary<string, string> langList = LanguageUtilities.MapLanguages();\r
+\r
+            foreach (string selectedItem in Properties.Settings.Default.SelectedLanguages)\r
+            {\r
+                // removing wrong keys when a new Language list comes out.\r
+                if(langList.ContainsKey(selectedItem))\r
+                    listBox_selectedLanguages.Items.Add(selectedItem);\r
+            }\r
+\r
             foreach (string item in langList.Keys)\r
+            {\r
                 drop_preferredLang.Items.Add(item);\r
 \r
+                // In the available languages should be no "Any" and no selected language.\r
+                if ((item != "Any") && (!Properties.Settings.Default.SelectedLanguages.Contains(item)))\r
+                {\r
+                        listBox_availableLanguages.Items.Add(item);\r
+                }\r
+            }\r
+\r
             // #############################\r
             // General\r
             // #############################\r
@@ -119,19 +135,82 @@ namespace Handbrake
 \r
             drop_preferredLang.SelectedItem = Properties.Settings.Default.NativeLanguage;\r
 \r
-            switch (Settings.Default.DubMode)\r
+            if (Settings.Default.DubMode != 255)\r
             {\r
+                switch (Settings.Default.DubMode)\r
+                {\r
+                    case 0:\r
+                        Settings.Default.DubModeAudio = 2;\r
+                        Settings.Default.DubModeSubtitle = 0;\r
+                        Settings.Default.DubMode = 255;\r
+                        break;\r
+                    case 1:\r
+                        Settings.Default.DubModeAudio = 4;\r
+                        Settings.Default.DubModeSubtitle = 0;\r
+                        Settings.Default.DubMode = 255;\r
+                        break;\r
+                    case 2:\r
+                        Settings.Default.DubModeAudio = 2;\r
+                        Settings.Default.DubModeSubtitle = 4;\r
+                        Settings.Default.DubMode = 255;\r
+                        break;\r
+                    case 3:\r
+                        Settings.Default.DubModeAudio = 4;\r
+                        Settings.Default.DubModeSubtitle = 4;\r
+                        Settings.Default.DubMode = 255;\r
+                        break;\r
+                    default:\r
+                        Settings.Default.DubMode = 255;\r
+                        break;\r
+                }\r
+            }\r
+\r
+            switch (Settings.Default.DubModeAudio)\r
+            {\r
+                case 0:\r
+                    radio_Audio_None.Checked = true;\r
+                    break;\r
                 case 1:\r
-                    radio_dub.Checked = true;\r
+                    radio_Audio_All.Checked = true;\r
                     break;\r
                 case 2:\r
-                    radio_foreignAndSubs.Checked = true;\r
+                    radio_Audio_First.Checked = true;\r
                     break;\r
                 case 3:\r
-                    radio_preferredAudioAndSubs.Checked = true;\r
+                    radio_Audio_Selected.Checked = true;\r
+                    break;\r
+                case 4:\r
+                    radio_Audio_PrefOnly.Checked = true;\r
+                    break;\r
+                default:\r
+                    radio_Audio_None.Checked = true;\r
+                    break;\r
+            }\r
+\r
+            switch (Settings.Default.DubModeSubtitle)\r
+            {\r
+                case 0:\r
+                    radio_Subtitle_None.Checked = true;\r
+                    break;\r
+                case 1:\r
+                    radio_Subtitle_All.Checked = true;\r
+                    break;\r
+                case 2:\r
+                    radio_Subtitle_First.Checked = true;\r
+                    break;\r
+                case 3:\r
+                    radio_Subtitle_Selected.Checked = true;\r
+                    break;\r
+                case 4:\r
+                    radio_Subtitle_PrefOnly.Checked = true;\r
+                    break;\r
+                default:\r
+                    radio_Subtitle_None.Checked = true;\r
                     break;\r
             }\r
 \r
+            check_AddOnlyOneAudioPerLanguage.Checked = Properties.Settings.Default.addOnlyOneAudioPerLanguage;\r
+            \r
             check_AddCCTracks.Checked = Properties.Settings.Default.useClosedCaption;\r
 \r
             // #############################\r
@@ -321,7 +400,6 @@ namespace Handbrake
 \r
         private void cb_mp4FileMode_SelectedIndexChanged(object sender, EventArgs e)\r
         {\r
-\r
             Properties.Settings.Default.useM4v = cb_mp4FileMode.SelectedIndex;\r
         }\r
 \r
@@ -358,24 +436,214 @@ namespace Handbrake
         private void drop_preferredLang_SelectedIndexChanged(object sender, EventArgs e)\r
         {\r
             Properties.Settings.Default.NativeLanguage = drop_preferredLang.SelectedItem.ToString();\r
+\r
+            if (Properties.Settings.Default.NativeLanguage == "Any")\r
+            {\r
+                this.groupBox1.Enabled = false;\r
+                this.groupBox2.Enabled = false;\r
+                this.groupBox3.Visible = true;\r
+            }\r
+            else\r
+            {   \r
+                this.groupBox1.Enabled = true;\r
+                this.groupBox2.Enabled = true;\r
+                this.groupBox3.Visible = false;\r
+            }\r
+        }\r
+\r
+        private void button_removeLanguage_Click(object sender, EventArgs e)\r
+        {\r
+            if (listBox_selectedLanguages.SelectedItems.Count > 0)\r
+            {\r
+                String[] movedItems = new String[listBox_selectedLanguages.SelectedItems.Count];\r
+\r
+                listBox_selectedLanguages.SelectedItems.CopyTo(movedItems, 0);\r
+\r
+                listBox_availableLanguages.Items.AddRange(movedItems);\r
+\r
+                listBox_selectedLanguages.SelectedItems.Clear();\r
+                foreach (string item in movedItems)\r
+                {\r
+                    listBox_selectedLanguages.Items.Remove(item);\r
+\r
+                    if (Properties.Settings.Default.SelectedLanguages.Contains(item))\r
+                        Properties.Settings.Default.SelectedLanguages.Remove(item);\r
+                }\r
+            }\r
+        }\r
+\r
+        private void button_addLanguage_Click(object sender, EventArgs e)\r
+        {\r
+            if (listBox_availableLanguages.SelectedItems.Count > 0)\r
+            {\r
+                String[] movedItems = new String[listBox_availableLanguages.SelectedItems.Count];\r
+\r
+                listBox_availableLanguages.SelectedItems.CopyTo(movedItems, 0);\r
+\r
+                listBox_selectedLanguages.Items.AddRange(movedItems);\r
+                Properties.Settings.Default.SelectedLanguages.AddRange(movedItems);\r
+\r
+                listBox_availableLanguages.SelectedItems.Clear();\r
+                foreach (string item in movedItems)\r
+                {\r
+                    listBox_availableLanguages.Items.Remove(item);\r
+                }\r
+            }\r
+        }\r
+\r
+        private void button_clearLanguage_Click(object sender, EventArgs e)\r
+        {\r
+            if (listBox_selectedLanguages.Items.Count > 0)\r
+            {\r
+                String[] movedItems = new String[listBox_selectedLanguages.Items.Count];\r
+\r
+                listBox_selectedLanguages.Items.CopyTo(movedItems, 0);\r
+\r
+                listBox_availableLanguages.Items.AddRange(movedItems);\r
+\r
+                foreach (string item in movedItems)\r
+                {\r
+                    listBox_selectedLanguages.Items.Remove(item);\r
+\r
+                    if (Properties.Settings.Default.SelectedLanguages.Contains(item))\r
+                        Properties.Settings.Default.SelectedLanguages.Remove(item);\r
+                }\r
+            }\r
+        }\r
+\r
+        private void button_moveLanguageUp_Click(object sender, EventArgs e)\r
+        {\r
+            int ilevel = 0;\r
+            if (listBox_selectedLanguages.SelectedItems.Count > 0)\r
+            {\r
+                ListBox.SelectedIndexCollection selectedItems = listBox_selectedLanguages.SelectedIndices;\r
+                int[] index_selectedItems = new int[selectedItems.Count];\r
+\r
+                for (int i = 0; i < selectedItems.Count; i++)\r
+                    index_selectedItems[i] = selectedItems[i];\r
+\r
+                for (int i = 0; i < index_selectedItems.Length; i++)\r
+                {\r
+                    ilevel = index_selectedItems[i];\r
+\r
+                    if ((ilevel - 1 >= 0) && (ilevel - 1 >= i))\r
+                    {\r
+                        String lvitem = (String)listBox_selectedLanguages.Items[ilevel];\r
+                        listBox_selectedLanguages.Items.Remove(lvitem);\r
+                        listBox_selectedLanguages.Items.Insert(ilevel - 1, lvitem);\r
+                        listBox_selectedLanguages.SetSelected(ilevel - 1, true);\r
+\r
+                        // Do the same on the Property.\r
+                        Properties.Settings.Default.SelectedLanguages.Remove(lvitem);\r
+                        Properties.Settings.Default.SelectedLanguages.Insert(ilevel - 1, lvitem);\r
+                    }\r
+                }\r
+            }         \r
+        }\r
+\r
+        private void button_moveLanguageDown_Click(object sender, EventArgs e)\r
+        {\r
+            int ilevel = 0;\r
+            if (listBox_selectedLanguages.SelectedItems.Count > 0)\r
+            {\r
+                ListBox.SelectedIndexCollection selectedItems = listBox_selectedLanguages.SelectedIndices;\r
+                int[] index_selectedItems = new int[selectedItems.Count];\r
+\r
+                for (int i = 0; i < selectedItems.Count; i++)\r
+                    index_selectedItems[i] = selectedItems[i];\r
+\r
+                for (int i = index_selectedItems.Length - 1; i >= 0 ; i--)\r
+                {\r
+                    ilevel = index_selectedItems[i];\r
+\r
+                    if ((ilevel + 1 >= 0) && (ilevel + 1 <= listBox_selectedLanguages.Items.Count - (index_selectedItems.Length - i)))\r
+                    {\r
+                        String lvitem = (String)listBox_selectedLanguages.Items[ilevel];\r
+                        listBox_selectedLanguages.Items.Remove(lvitem);\r
+                        listBox_selectedLanguages.Items.Insert(ilevel + 1, lvitem);\r
+                        listBox_selectedLanguages.SetSelected(ilevel + 1, true);\r
+\r
+                        // Do the same on the Property.\r
+                        Properties.Settings.Default.SelectedLanguages.Remove(lvitem);\r
+                        Properties.Settings.Default.SelectedLanguages.Insert(ilevel + 1, lvitem);\r
+                    }\r
+                }\r
+            }          \r
+        }\r
+\r
+        private void listBox_selectedLanguages_MouseDoubleClick(object sender, MouseEventArgs e)\r
+        {\r
+            this.button_removeLanguage_Click(this, new EventArgs());\r
+        }\r
+\r
+        private void listBox_availableLanguages_MouseDoubleClick(object sender, MouseEventArgs e)\r
+        {\r
+            this.button_addLanguage_Click(this, new EventArgs());\r
+        }\r
+\r
+        private void radio_Audio_None_CheckedChanged(object sender, EventArgs e)\r
+        {\r
+            if (radio_Audio_None.Checked)\r
+                Properties.Settings.Default.DubModeAudio = 0;\r
+        }\r
+\r
+        private void radio_Audio_All_CheckedChanged(object sender, EventArgs e)\r
+        {\r
+            if (radio_Audio_All.Checked)\r
+                Properties.Settings.Default.DubModeAudio = 1;\r
+        }\r
+\r
+        private void radio_Audio_First_CheckedChanged(object sender, EventArgs e)\r
+        {\r
+            if (radio_Audio_First.Checked)\r
+                Properties.Settings.Default.DubModeAudio = 2;\r
+        }\r
+\r
+        private void radio_Audio_Selected_CheckedChanged(object sender, EventArgs e)\r
+        {\r
+            if (radio_Audio_Selected.Checked)\r
+                Properties.Settings.Default.DubModeAudio = 3;\r
+        }\r
+\r
+        private void radio_Audio_PrefOnly_CheckedChanged(object sender, EventArgs e)\r
+        {\r
+            if (radio_Audio_PrefOnly.Checked)\r
+                Properties.Settings.Default.DubModeAudio = 4;\r
+        }\r
+\r
+        private void radio_Subtitle_None_CheckedChanged(object sender, EventArgs e)\r
+        {\r
+            if (radio_Subtitle_None.Checked)\r
+                Properties.Settings.Default.DubModeSubtitle = 0;\r
+        }\r
+\r
+        private void radio_Subtitle_All_CheckedChanged(object sender, EventArgs e)\r
+        {\r
+            if (radio_Subtitle_All.Checked)\r
+                Properties.Settings.Default.DubModeSubtitle = 1;\r
+        }\r
+\r
+        private void radio_Subtitle_First_CheckedChanged(object sender, EventArgs e)\r
+        {\r
+            if (radio_Subtitle_First.Checked)\r
+                Properties.Settings.Default.DubModeSubtitle = 2;\r
         }\r
 \r
-        private void radio_dub_CheckedChanged(object sender, EventArgs e)\r
+        private void radio_Subtitle_Selected_CheckedChanged(object sender, EventArgs e)\r
         {\r
-            if (radio_dub.Checked)\r
-                Properties.Settings.Default.DubMode = 1;\r
+            if (radio_Subtitle_Selected.Checked)\r
+                Properties.Settings.Default.DubModeSubtitle = 3;\r
         }\r
 \r
-        private void radio_foreignAndSubs_CheckedChanged(object sender, EventArgs e)\r
+        private void radio_Subtitle_PrefOnly_CheckedChanged(object sender, EventArgs e)\r
         {\r
-            if (radio_foreignAndSubs.Checked)\r
-                Properties.Settings.Default.DubMode = 2;\r
+            if (radio_Subtitle_PrefOnly.Checked)\r
+                Properties.Settings.Default.DubModeSubtitle = 4;\r
         }\r
 \r
-        private void radio_preferredAudioAndSubs_CheckedChanged(object sender, EventArgs e)\r
+        private void check_AddOnlyOneAudioPerLanguage_CheckedChanged(object sender, EventArgs e)\r
         {\r
-            if (radio_preferredAudioAndSubs.Checked)\r
-                Properties.Settings.Default.DubMode = 3;\r
+            Settings.Default.addOnlyOneAudioPerLanguage = check_AddOnlyOneAudioPerLanguage.Checked;\r
         }\r
 \r
         private void check_AddCCTracks_CheckedChanged(object sender, EventArgs e)\r