OSDN Git Service

WinGui:
authorsr55 <sr55@b64f7644-9d1e-0410-96f1-a4d463321fa5>
Fri, 4 Apr 2008 18:11:39 +0000 (18:11 +0000)
committersr55 <sr55@b64f7644-9d1e-0410-96f1-a4d463321fa5>
Fri, 4 Apr 2008 18:11:39 +0000 (18:11 +0000)
- Just a very quick cleanup of frmMain.cs

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

win/C#/frmMain.Designer.cs
win/C#/frmMain.cs
win/C#/frmMain.resx

index aa338cc..2febb7f 100644 (file)
@@ -79,7 +79,6 @@ namespace Handbrake
             this.ISO_Open = new System.Windows.Forms.OpenFileDialog();\r
             this.FileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\r
             this.mnu_open = new System.Windows.Forms.ToolStripMenuItem();\r
-            this.mnu_save = new System.Windows.Forms.ToolStripMenuItem();\r
             this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();\r
             this.mnu_exit = new System.Windows.Forms.ToolStripMenuItem();\r
             this.mnu_open3 = new System.Windows.Forms.ToolStripMenuItem();\r
@@ -244,8 +243,6 @@ namespace Handbrake
             this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator();\r
             this.btn_ActivityWindow = new System.Windows.Forms.ToolStripButton();\r
             this.toolStripSeparator8 = new System.Windows.Forms.ToolStripSeparator();\r
-            this.button1 = new System.Windows.Forms.Button();\r
-            this.button2 = new System.Windows.Forms.Button();\r
             Label38 = new System.Windows.Forms.Label();\r
             ((System.ComponentModel.ISupportInitialize)(this.slider_videoQuality)).BeginInit();\r
             ((System.ComponentModel.ISupportInitialize)(this.data_chpt)).BeginInit();\r
@@ -813,7 +810,6 @@ namespace Handbrake
             // \r
             this.FileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {\r
             this.mnu_open,\r
-            this.mnu_save,\r
             this.toolStripSeparator2,\r
             this.mnu_exit});\r
             this.FileToolStripMenuItem.Name = "FileToolStripMenuItem";\r
@@ -830,17 +826,6 @@ namespace Handbrake
             this.mnu_open.Text = "&Import Preset";\r
             this.mnu_open.Click += new System.EventHandler(this.mnu_open_Click);\r
             // \r
-            // mnu_save\r
-            // \r
-            this.mnu_save.Image = ((System.Drawing.Image)(resources.GetObject("mnu_save.Image")));\r
-            this.mnu_save.ImageTransparentColor = System.Drawing.Color.Magenta;\r
-            this.mnu_save.Name = "mnu_save";\r
-            this.mnu_save.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.S)));\r
-            this.mnu_save.Size = new System.Drawing.Size(210, 22);\r
-            this.mnu_save.Text = "&Save Preset";\r
-            this.mnu_save.Visible = false;\r
-            this.mnu_save.Click += new System.EventHandler(this.mnu_save_Click);\r
-            // \r
             // toolStripSeparator2\r
             // \r
             this.toolStripSeparator2.Name = "toolStripSeparator2";\r
@@ -2679,6 +2664,7 @@ namespace Handbrake
             this.toolStripSeparator8});\r
             this.toolStrip1.Location = new System.Drawing.Point(0, 24);\r
             this.toolStrip1.Name = "toolStrip1";\r
+            this.toolStrip1.RenderMode = System.Windows.Forms.ToolStripRenderMode.System;\r
             this.toolStrip1.Size = new System.Drawing.Size(931, 39);\r
             this.toolStrip1.TabIndex = 13;\r
             this.toolStrip1.Text = "toolStrip1";\r
@@ -2743,33 +2729,11 @@ namespace Handbrake
             this.toolStripSeparator8.Name = "toolStripSeparator8";\r
             this.toolStripSeparator8.Size = new System.Drawing.Size(6, 39);\r
             // \r
-            // button1\r
-            // \r
-            this.button1.Location = new System.Drawing.Point(620, 29);\r
-            this.button1.Name = "button1";\r
-            this.button1.Size = new System.Drawing.Size(75, 23);\r
-            this.button1.TabIndex = 3;\r
-            this.button1.Text = "load";\r
-            this.button1.UseVisualStyleBackColor = true;\r
-            this.button1.Click += new System.EventHandler(this.button1_Click);\r
-            // \r
-            // button2\r
-            // \r
-            this.button2.Location = new System.Drawing.Point(699, 29);\r
-            this.button2.Name = "button2";\r
-            this.button2.Size = new System.Drawing.Size(75, 23);\r
-            this.button2.TabIndex = 15;\r
-            this.button2.Text = "save";\r
-            this.button2.UseVisualStyleBackColor = true;\r
-            this.button2.Click += new System.EventHandler(this.button2_Click);\r
-            // \r
             // frmMain\r
             // \r
             this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);\r
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\r
             this.ClientSize = new System.Drawing.Size(931, 617);\r
-            this.Controls.Add(this.button2);\r
-            this.Controls.Add(this.button1);\r
             this.Controls.Add(this.lbl_encode);\r
             this.Controls.Add(this.toolStrip1);\r
             this.Controls.Add(this.groupBox2);\r
@@ -2913,7 +2877,6 @@ namespace Handbrake
         private System.Windows.Forms.FolderBrowserDialog DVD_Open;\r
         private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;\r
         private System.Windows.Forms.ToolStripMenuItem mnu_open;\r
-        private System.Windows.Forms.ToolStripMenuItem mnu_save;\r
         private System.Windows.Forms.ToolStripSeparator toolStripSeparator7;\r
         private System.Windows.Forms.TreeView treeView_presets;\r
         internal System.Windows.Forms.CheckBox check_vfr;\r
@@ -3009,8 +2972,6 @@ namespace Handbrake
         internal System.Windows.Forms.Label label64;\r
         internal System.Windows.Forms.ComboBox drop_refFrames;\r
         internal System.Windows.Forms.CheckBox check_mixedReferences;\r
-        private System.Windows.Forms.Button button1;\r
-        private System.Windows.Forms.Button button2;\r
         internal System.Windows.Forms.ComboBox drp_audmix_2;\r
         internal System.Windows.Forms.Label label65;\r
         internal System.Windows.Forms.Label label14;\r
index 8e2d36c..cd0005e 100644 (file)
@@ -6,12 +6,9 @@
 \r
 using System;\r
 using System.Collections;\r
-using System.ComponentModel;\r
-using System.Data;\r
 using System.Drawing;\r
 using System.Text;\r
 using System.Windows.Forms;\r
-using System.Net;\r
 using System.IO;\r
 using System.Diagnostics;\r
 using System.Threading;\r
@@ -24,12 +21,12 @@ namespace Handbrake
     public partial class frmMain : Form\r
     {\r
         // -------------------------------------------------------------- \r
-        // Applicaiton Startup Stuff\r
+        // Applicaiton Startup\r
         // --------------------------------------------------------------\r
 \r
         #region Application Startup\r
 \r
-        // Some stuff that needs to be Initialized. \r
+        // Declarations\r
         private Process hbProc;\r
         private Parsing.DVD thisDVD;\r
         private frmQueue queueWindow = new frmQueue();\r
@@ -120,6 +117,7 @@ namespace Handbrake
             this.Enabled = true;\r
         }\r
 \r
+        // Startup Functions\r
         private void startupUpdateCheck()\r
         {\r
             try\r
@@ -142,18 +140,15 @@ namespace Handbrake
                 MessageBox.Show(exc.ToString());\r
             }\r
         }\r
-\r
         private void splashTimer(object sender)\r
         {\r
             Thread.Sleep(1000);  //sit for 1 seconds then exit\r
         }\r
-\r
         private void showSplash(object sender)\r
         {\r
             Form splash = new frmSplashScreen();\r
             splash.Show();\r
         }\r
-\r
         private void setupH264Panel()\r
         {\r
             /*Set opt widget values here*/\r
@@ -279,7 +274,6 @@ namespace Handbrake
             /* Standardize the option string */\r
             rtf_x264Query.Text = "";\r
         }\r
-\r
         private void loadUserDefaults()\r
         {\r
             string userDefaults = Properties.Settings.Default.defaultUserSettings;\r
@@ -297,18 +291,12 @@ namespace Handbrake
 \r
         #endregion\r
 \r
-        #region Set Varible Function\r
-        public void setStreamReader(Parsing.DVD dvd)\r
-        {\r
-            this.thisDVD = dvd;\r
-        }\r
-        #endregion\r
-\r
         // -------------------------------------------------------------- \r
-        // The main Menu bar.\r
+        // The Applications Main Menu\r
         // -------------------------------------------------------------- \r
 \r
         #region File Menu\r
+\r
         private void mnu_open_Click(object sender, EventArgs e)\r
         {\r
             string filename;\r
@@ -339,35 +327,6 @@ namespace Handbrake
                 }\r
             }\r
         }\r
-\r
-        private void mnu_save_Click(object sender, EventArgs e)\r
-        {\r
-            string filename;\r
-            File_Save.ShowDialog();\r
-            filename = File_Save.FileName;\r
-            if (filename != "")\r
-            {\r
-                try\r
-                {\r
-                    // Create a StreamWriter and open the file\r
-                    StreamWriter line = new StreamWriter(filename);\r
-\r
-                    // Generate and write the query string to the file\r
-                    String query = hb_common_func.GenerateTheQuery(this);\r
-                    line.WriteLine(query);\r
-\r
-                    // close the stream\r
-                    line.Close();\r
-                    MessageBox.Show("Your profile has been sucessfully saved.", "Status", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);\r
-                }\r
-                catch (Exception)\r
-                {\r
-                    MessageBox.Show("Unable to write to the file. Please make sure the location has the correct permissions for file writing.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand);\r
-                }\r
-\r
-            }\r
-        }\r
-\r
         private void mnu_exit_Click(object sender, EventArgs e)\r
         {\r
             Application.Exit();\r
@@ -381,13 +340,11 @@ namespace Handbrake
         {\r
             showQueue();\r
         }\r
-\r
         private void mnu_viewDVDdata_Click(object sender, EventArgs e)\r
         {\r
             frmDvdInfo dvdInfoWindow = new frmDvdInfo();\r
             dvdInfoWindow.Show();\r
         }\r
-\r
         private void mnu_options_Click(object sender, EventArgs e)\r
         {\r
             Form Options = new frmOptions();\r
@@ -409,7 +366,6 @@ namespace Handbrake
             else\r
                 MessageBox.Show("Presets have been updated", "Alert", MessageBoxButtons.OK, MessageBoxIcon.Information);\r
         }\r
-\r
         private void mnu_SelectDefault_Click(object sender, EventArgs e)\r
         {\r
             loadNormalPreset();\r
@@ -423,22 +379,18 @@ namespace Handbrake
         {\r
             Process.Start("http://handbrake.fr/trac");\r
         }\r
-\r
         private void mnu_faq_Click(object sender, EventArgs e)\r
         {\r
             Process.Start("http://handbrake.fr/trac/wiki/SupportFAQ");\r
         }\r
-\r
         private void mnu_onlineDocs_Click(object sender, EventArgs e)\r
         {\r
             Process.Start("http://handbrake.fr/?article=documentation");\r
         }\r
-\r
         private void mnu_handbrake_home_Click(object sender, EventArgs e)\r
         {\r
             Process.Start("http://handbrake.fr");\r
         }\r
-\r
         private void mnu_UpdateCheck_Click(object sender, EventArgs e)\r
         {\r
             Boolean update = hb_common_func.updateCheck(true);\r
@@ -450,7 +402,6 @@ namespace Handbrake
             else\r
                 MessageBox.Show("There are no new updates at this time.", "Update Check", MessageBoxButtons.OK, MessageBoxIcon.Information);\r
         }\r
-\r
         private void mnu_about_Click(object sender, EventArgs e)\r
         {\r
             Form About = new frmAbout();\r
@@ -460,11 +411,56 @@ namespace Handbrake
         #endregion\r
 \r
         // -------------------------------------------------------------- \r
-        // Buttons on the main Window and items that require actions\r
+        // MainWindow Components, Actions and Functions\r
         // --------------------------------------------------------------\r
 \r
-        #region Buttons\r
+        #region Actions\r
+\r
+        // ToolBar\r
+        private void btn_start_Click(object sender, EventArgs e)\r
+        {\r
+            if (text_source.Text == "" || text_source.Text == "Click 'Browse' to continue" || text_destination.Text == "")\r
+                MessageBox.Show("No source OR destination selected.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);\r
+            else\r
+            {\r
+                String query;\r
+                if (rtf_query.Text != "")\r
+                    query = rtf_query.Text;\r
+                else\r
+                    query = hb_common_func.GenerateTheQuery(this);\r
+\r
+                ThreadPool.QueueUserWorkItem(procMonitor, query);\r
+                lbl_encode.Visible = true;\r
+                lbl_encode.Text = "Encoding in Progress";\r
+            }\r
+        }\r
+        private void btn_add2Queue_Click(object sender, EventArgs e)\r
+        {\r
+            if (text_source.Text == "" || text_source.Text == "Click 'Browse' to continue" || text_destination.Text == "")\r
+                MessageBox.Show("No source OR destination selected.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);\r
+            else\r
+            {\r
+                String query;\r
+                if (rtf_query.Text != "")\r
+                    query = rtf_query.Text;\r
+                else\r
+                    query = hb_common_func.GenerateTheQuery(this);\r
+\r
+                queueWindow.list_queue.Items.Add(query);\r
+                queueWindow.Show();\r
+            }\r
+        }\r
+        private void btn_showQueue_Click(object sender, EventArgs e)\r
+        {\r
+            showQueue();\r
+        }\r
+        private void btn_ActivityWindow_Click(object sender, EventArgs e)\r
+        {\r
+            Form ActivityWindow = new frmActivityWindow();\r
+            ActivityWindow.ShowDialog();\r
+        }\r
 \r
+        //Source\r
         private void btn_Browse_Click(object sender, EventArgs e)\r
         {\r
             String filename = "";\r
@@ -501,102 +497,11 @@ namespace Handbrake
 \r
             }\r
         }\r
-\r
-        private void btn_destBrowse_Click(object sender, EventArgs e)\r
-        {\r
-            // This removes the file extension from the filename box on the save file dialog.\r
-            // It's daft but some users don't realise that typing an extension overrides the dropdown extension selected.\r
-            DVD_Save.FileName = DVD_Save.FileName.Replace(".mp4", "").Replace(".m4v", "").Replace(".mkv", "").Replace(".ogm", "").Replace(".avi", "");\r
-\r
-            // Show the dialog and set the main form file path\r
-            DVD_Save.ShowDialog();\r
-            if (DVD_Save.FileName.StartsWith("\\"))\r
-                MessageBox.Show("Sorry, HandBrake does not support UNC file paths. \nTry mounting the share as a network drive in My Computer", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);\r
-            else\r
-            {\r
-                setAudioByContainer(DVD_Save.FileName);\r
-\r
-                text_destination.Text = DVD_Save.FileName;\r
-\r
-                // Quicktime requires .m4v file for chapter markers to work. If checked, change the extension to .m4v (mp4 and m4v are the same thing)\r
-                if (Check_ChapterMarkers.Checked)\r
-                    text_destination.Text = text_destination.Text.Replace(".mp4", ".m4v");\r
-            }\r
-        }\r
-\r
-        private void btn_ActivityWindow_Click(object sender, EventArgs e)\r
-        {\r
-            Form ActivityWindow = new frmActivityWindow();\r
-            ActivityWindow.ShowDialog();\r
-        }\r
-\r
-        #endregion\r
-\r
-        #region Reusable Functions\r
-        private void setAudioByContainer(String path)\r
-        {\r
-            if ((path.EndsWith(".mp4")) || (path.EndsWith(".mp4")))\r
-            {\r
-                drp_audenc_1.Items.Clear();\r
-                drp_audenc_1.Items.Add("AAC");\r
-                drp_audenc_1.SelectedIndex = 0;\r
-\r
-                drp_audenc_2.Items.Clear();\r
-                drp_audenc_2.Items.Add("AAC");\r
-                if (drp_audenc_2.Enabled)\r
-                    drp_audenc_2.SelectedIndex = 0;\r
-            }\r
-            else if (path.EndsWith(".avi"))\r
-            {\r
-                drp_audenc_1.Items.Clear();\r
-                drp_audenc_1.Items.Add("MP3");\r
-                drp_audenc_1.Items.Add("AC3");\r
-                drp_audenc_1.SelectedIndex = 0;\r
-\r
-                drp_audenc_2.Items.Clear();\r
-                drp_audenc_2.Items.Add("MP3");\r
-                drp_audenc_2.Items.Add("AC3");\r
-                if (drp_audenc_2.Enabled)\r
-                    drp_audenc_2.SelectedIndex = 0;\r
-            }\r
-            else if (path.EndsWith(".ogm"))\r
-            {\r
-                drp_audenc_1.Items.Clear();\r
-                drp_audenc_1.Items.Add("Vorbis");\r
-                drp_audenc_1.SelectedIndex = 0;\r
-\r
-                drp_audenc_2.Items.Clear();\r
-                drp_audenc_2.Items.Add("Vorbis");\r
-                if (drp_audenc_2.Enabled)\r
-                    drp_audenc_2.SelectedIndex = 0;\r
-            }\r
-            else if (path.EndsWith(".mkv"))\r
-            {\r
-                drp_audenc_1.Items.Clear();\r
-                drp_audenc_1.Items.Add("AAC");\r
-                drp_audenc_1.Items.Add("MP3");\r
-                drp_audenc_1.Items.Add("AC3");\r
-                drp_audenc_1.Items.Add("Vorbis");\r
-                drp_audenc_1.SelectedIndex = 0;\r
-\r
-                drp_audenc_2.Items.Clear();\r
-                drp_audenc_2.Items.Add("AAC");\r
-                drp_audenc_2.Items.Add("MP3");\r
-                drp_audenc_2.Items.Add("AC3");\r
-                drp_audenc_2.Items.Add("Vorbis");\r
-                if (drp_audenc_2.Enabled)\r
-                    drp_audenc_2.SelectedIndex = 0;\r
-            }\r
-        }\r
-        #endregion\r
-\r
-        #region frmMain Actions\r
-\r
-        private void text_destination_TextChanged(object sender, EventArgs e)\r
+        private void drp_dvdtitle_Click(object sender, EventArgs e)\r
         {\r
-            setAudioByContainer(text_destination.Text);\r
+            if (drp_dvdtitle.Items.Count == 0)\r
+                MessageBox.Show("There are no titles to select. Please scan the DVD by clicking the 'browse' button above before trying to select a title.", "Alert", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);\r
         }\r
-\r
         private void drp_dvdtitle_SelectedIndexChanged(object sender, EventArgs e)\r
         {\r
             // Reset some values on the form\r
@@ -657,7 +562,6 @@ namespace Handbrake
             hb_common_func.autoName(this);\r
             hb_common_func.chapterNaming(this);\r
         }\r
-\r
         private void drop_chapterStart_SelectedIndexChanged(object sender, EventArgs e)\r
         {\r
             drop_chapterStart.BackColor = Color.White;\r
@@ -679,7 +583,6 @@ namespace Handbrake
             // Run the Autonaming function\r
             hb_common_func.autoName(this);\r
         }\r
-\r
         private void drop_chapterFinish_SelectedIndexChanged(object sender, EventArgs e)\r
         {\r
             drop_chapterFinish.BackColor = Color.White;\r
@@ -703,77 +606,185 @@ namespace Handbrake
             hb_common_func.autoName(this);\r
         }\r
 \r
-        private void text_bitrate_TextChanged(object sender, EventArgs e)\r
-        {\r
-            text_filesize.Text = "";\r
-            slider_videoQuality.Value = 0;\r
-            SliderValue.Text = "0%";\r
-        }\r
-\r
-        private void text_filesize_TextChanged(object sender, EventArgs e)\r
-        {\r
-            text_bitrate.Text = "";\r
-            slider_videoQuality.Value = 0;\r
-            SliderValue.Text = "0%";\r
-        }\r
-\r
-        private void slider_videoQuality_Scroll(object sender, EventArgs e)\r
+        //Destination\r
+        private void btn_destBrowse_Click(object sender, EventArgs e)\r
         {\r
-            SliderValue.Text = slider_videoQuality.Value.ToString() + "%";\r
-            text_bitrate.Text = "";\r
-            text_filesize.Text = "";\r
-        }\r
+            // This removes the file extension from the filename box on the save file dialog.\r
+            // It's daft but some users don't realise that typing an extension overrides the dropdown extension selected.\r
+            DVD_Save.FileName = DVD_Save.FileName.Replace(".mp4", "").Replace(".m4v", "").Replace(".mkv", "").Replace(".ogm", "").Replace(".avi", "");\r
 \r
-        private void text_width_TextChanged(object sender, EventArgs e)\r
-        {\r
-            try\r
+            // Show the dialog and set the main form file path\r
+            DVD_Save.ShowDialog();\r
+            if (DVD_Save.FileName.StartsWith("\\"))\r
+                MessageBox.Show("Sorry, HandBrake does not support UNC file paths. \nTry mounting the share as a network drive in My Computer", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);\r
+            else\r
             {\r
+                setAudioByContainer(DVD_Save.FileName);\r
 \r
-                if ((int.Parse(text_width.Text) % 16) != 0)\r
-                    text_width.BackColor = Color.LightCoral;\r
-                else\r
-                    text_width.BackColor = Color.LightGreen;\r
-\r
-\r
-                if ((lbl_Aspect.Text != "Select a Title") && (drp_crop.SelectedIndex == 2))\r
-                {\r
-                    double height = int.Parse(text_width.Text) / double.Parse(lbl_Aspect.Text);\r
-                    double mod16 = height % 16;\r
-                    height = height - mod16;\r
+                text_destination.Text = DVD_Save.FileName;\r
 \r
-                    if (text_width.Text == "")\r
-                    {\r
-                        text_height.Text = "";\r
-                        text_width.BackColor = Color.White;\r
-                    }\r
-                    else\r
-                        text_height.Text = height.ToString();\r
-                }\r
-            }\r
-            catch (Exception)\r
-            {\r
-                // No need to throw an error here.\r
+                // Quicktime requires .m4v file for chapter markers to work. If checked, change the extension to .m4v (mp4 and m4v are the same thing)\r
+                if (Check_ChapterMarkers.Checked)\r
+                    text_destination.Text = text_destination.Text.Replace(".mp4", ".m4v");\r
             }\r
         }\r
-\r
-        private void text_height_TextChanged(object sender, EventArgs e)\r
+        private void text_destination_TextChanged(object sender, EventArgs e)\r
         {\r
-            try\r
-            {\r
-                if ((int.Parse(text_height.Text) % 16) != 0)\r
-                    text_height.BackColor = Color.LightCoral;\r
-                else\r
-                    text_height.BackColor = Color.LightGreen;\r
-            }\r
-            catch (Exception)\r
-            {\r
-                // No need to alert the user.\r
-            }\r
+            setAudioByContainer(text_destination.Text);\r
         }\r
 \r
-        private void drp_crop_SelectedIndexChanged(object sender, EventArgs e)\r
+        // Output Settings\r
+        private void drp_videoEncoder_SelectedIndexChanged(object sender, EventArgs e)\r
         {\r
-            if ((string)drp_crop.SelectedItem == "Custom")\r
+            //Turn off some options which are H.264 only when the user selects a non h.264 encoder\r
+            if (!drp_videoEncoder.Text.Contains("H.264"))\r
+            {\r
+                check_turbo.CheckState = CheckState.Unchecked;\r
+                check_turbo.Enabled = false;\r
+                h264Tab.Enabled = false;\r
+                rtf_x264Query.Text = "";\r
+                check_iPodAtom.Enabled = false;\r
+                check_iPodAtom.Checked = false;\r
+                check_optimiseMP4.Enabled = false;\r
+                if (drp_anamorphic.Items.Count == 3)\r
+                    drp_anamorphic.Items.RemoveAt(2);\r
+            }\r
+            else\r
+            {\r
+                if (check_2PassEncode.CheckState == CheckState.Checked)\r
+                    check_turbo.Enabled = true;\r
+\r
+                h264Tab.Enabled = true;\r
+                check_iPodAtom.Enabled = true;\r
+                check_optimiseMP4.Enabled = true;\r
+                if (!drp_anamorphic.Items.Contains("Loose"))\r
+                    drp_anamorphic.Items.Add("Loose");\r
+            }\r
+\r
+        }\r
+        private void check_largeFile_CheckedChanged(object sender, EventArgs e)\r
+        {\r
+            if ((!text_destination.Text.Contains(".mp4")) && (!text_destination.Text.Contains(".m4v")))\r
+            {\r
+                check_largeFile.BackColor = Color.LightCoral;\r
+                check_largeFile.CheckState = CheckState.Unchecked;\r
+            }\r
+            else\r
+            {\r
+                check_largeFile.BackColor = Color.Transparent;\r
+            }\r
+        }\r
+        private void check_iPodAtom_CheckedChanged(object sender, EventArgs e)\r
+        {\r
+            if ((!text_destination.Text.Contains(".mp4")) && (!text_destination.Text.Contains(".m4v")))\r
+            {\r
+                text_destination.BackColor = Color.LightCoral;\r
+                check_iPodAtom.BackColor = Color.LightCoral;\r
+                check_iPodAtom.CheckState = CheckState.Unchecked;\r
+            }\r
+            else\r
+            {\r
+                check_iPodAtom.BackColor = Color.Transparent;\r
+                text_destination.BackColor = Color.White;\r
+            }\r
+        }\r
+        private void check_optimiseMP4_CheckedChanged(object sender, EventArgs e)\r
+        {\r
+            if ((!text_destination.Text.Contains(".mp4")) && (!text_destination.Text.Contains(".m4v")))\r
+            {\r
+                check_optimiseMP4.BackColor = Color.LightCoral;\r
+                text_destination.BackColor = Color.LightCoral;\r
+                check_optimiseMP4.CheckState = CheckState.Unchecked;\r
+            }\r
+            else\r
+            {\r
+                check_optimiseMP4.BackColor = Color.Transparent;\r
+                text_destination.BackColor = Color.White;\r
+            }\r
+        }\r
+\r
+        //Video Tab\r
+        private void text_bitrate_TextChanged(object sender, EventArgs e)\r
+        {\r
+            text_filesize.Text = "";\r
+            slider_videoQuality.Value = 0;\r
+            SliderValue.Text = "0%";\r
+        }\r
+        private void text_filesize_TextChanged(object sender, EventArgs e)\r
+        {\r
+            text_bitrate.Text = "";\r
+            slider_videoQuality.Value = 0;\r
+            SliderValue.Text = "0%";\r
+        }\r
+        private void slider_videoQuality_Scroll(object sender, EventArgs e)\r
+        {\r
+            SliderValue.Text = slider_videoQuality.Value.ToString() + "%";\r
+            text_bitrate.Text = "";\r
+            text_filesize.Text = "";\r
+        }\r
+        private void check_2PassEncode_CheckedChanged(object sender, EventArgs e)\r
+        {\r
+            if (check_2PassEncode.CheckState.ToString() == "Checked")\r
+            {\r
+                if (drp_videoEncoder.Text.Contains("H.264"))\r
+                    check_turbo.Enabled = true;\r
+            }\r
+            else\r
+            {\r
+                check_turbo.Enabled = false;\r
+                check_turbo.CheckState = CheckState.Unchecked;\r
+            }\r
+        }\r
+\r
+        //Picture Tab\r
+        private void text_width_TextChanged(object sender, EventArgs e)\r
+        {\r
+            try\r
+            {\r
+\r
+                if ((int.Parse(text_width.Text) % 16) != 0)\r
+                    text_width.BackColor = Color.LightCoral;\r
+                else\r
+                    text_width.BackColor = Color.LightGreen;\r
+\r
+\r
+                if ((lbl_Aspect.Text != "Select a Title") && (drp_crop.SelectedIndex == 2))\r
+                {\r
+                    double height = int.Parse(text_width.Text) / double.Parse(lbl_Aspect.Text);\r
+                    double mod16 = height % 16;\r
+                    height = height - mod16;\r
+\r
+                    if (text_width.Text == "")\r
+                    {\r
+                        text_height.Text = "";\r
+                        text_width.BackColor = Color.White;\r
+                    }\r
+                    else\r
+                        text_height.Text = height.ToString();\r
+                }\r
+            }\r
+            catch (Exception)\r
+            {\r
+                // No need to throw an error here.\r
+            }\r
+        }\r
+        private void text_height_TextChanged(object sender, EventArgs e)\r
+        {\r
+            try\r
+            {\r
+                if ((int.Parse(text_height.Text) % 16) != 0)\r
+                    text_height.BackColor = Color.LightCoral;\r
+                else\r
+                    text_height.BackColor = Color.LightGreen;\r
+            }\r
+            catch (Exception)\r
+            {\r
+                // No need to alert the user.\r
+            }\r
+        }\r
+        private void drp_crop_SelectedIndexChanged(object sender, EventArgs e)\r
+        {\r
+            if ((string)drp_crop.SelectedItem == "Custom")\r
             {\r
                 text_left.Enabled = true;\r
                 text_right.Enabled = true;\r
@@ -823,7 +834,6 @@ namespace Handbrake
 \r
             }\r
         }\r
-\r
         private void check_vfr_CheckedChanged(object sender, EventArgs e)\r
         {\r
             if (check_vfr.CheckState == CheckState.Checked)\r
@@ -842,7 +852,6 @@ namespace Handbrake
                 lbl_vfr.Visible = false;\r
             }\r
         }\r
-\r
         private void drp_anamorphic_SelectedIndexChanged(object sender, EventArgs e)\r
         {\r
             if (drp_anamorphic.SelectedIndex == 1)\r
@@ -874,70 +883,7 @@ namespace Handbrake
             }\r
         }\r
 \r
-        private void check_2PassEncode_CheckedChanged(object sender, EventArgs e)\r
-        {\r
-            if (check_2PassEncode.CheckState.ToString() == "Checked")\r
-            {\r
-                if (drp_videoEncoder.Text.Contains("H.264"))\r
-                    check_turbo.Enabled = true;\r
-            }\r
-            else\r
-            {\r
-                check_turbo.Enabled = false;\r
-                check_turbo.CheckState = CheckState.Unchecked;\r
-            }\r
-        }\r
-\r
-        private void check_largeFile_CheckedChanged(object sender, EventArgs e)\r
-        {\r
-            if ((!text_destination.Text.Contains(".mp4")) && (!text_destination.Text.Contains(".m4v")))\r
-            {\r
-                check_largeFile.BackColor = Color.LightCoral;\r
-                check_largeFile.CheckState = CheckState.Unchecked;\r
-            }\r
-            else\r
-            {\r
-                check_largeFile.BackColor = Color.Transparent;\r
-            }\r
-        }\r
-\r
-        private void check_iPodAtom_CheckedChanged(object sender, EventArgs e)\r
-        {\r
-            if ((!text_destination.Text.Contains(".mp4")) && (!text_destination.Text.Contains(".m4v")))\r
-            {\r
-                text_destination.BackColor = Color.LightCoral;\r
-                check_iPodAtom.BackColor = Color.LightCoral;\r
-                check_iPodAtom.CheckState = CheckState.Unchecked;\r
-            }\r
-            else\r
-            {\r
-                check_iPodAtom.BackColor = Color.Transparent;\r
-                text_destination.BackColor = Color.White;\r
-            }\r
-        }\r
-\r
-        private void check_optimiseMP4_CheckedChanged(object sender, EventArgs e)\r
-        {\r
-            if ((!text_destination.Text.Contains(".mp4")) && (!text_destination.Text.Contains(".m4v")))\r
-            {\r
-                check_optimiseMP4.BackColor = Color.LightCoral;\r
-                text_destination.BackColor = Color.LightCoral;\r
-                check_optimiseMP4.CheckState = CheckState.Unchecked;\r
-            }\r
-            else\r
-            {\r
-                check_optimiseMP4.BackColor = Color.Transparent;\r
-                text_destination.BackColor = Color.White;\r
-            }\r
-        }\r
-\r
-        private void drp_dvdtitle_Click(object sender, EventArgs e)\r
-        {\r
-            if (drp_dvdtitle.Items.Count == 0)\r
-                MessageBox.Show("There are no titles to select. Please scan the DVD by clicking the 'browse' button above before trying to select a title.", "Alert", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);\r
-        }\r
-\r
-        // Audio Track Changed\r
+        // Audio Tab\r
         private void drp_track1Audio_SelectedIndexChanged(object sender, EventArgs e)\r
         {\r
             if (drp_track1Audio.SelectedItem.Equals("None"))\r
@@ -988,8 +934,6 @@ namespace Handbrake
                 drp_audmix_2.Text = "Automatic";\r
             }\r
         }\r
-        \r
-        // Audio Mixdown Selection Changed\r
         private void drp_audioMixDown_SelectedIndexChanged(object sender, EventArgs e)\r
         {\r
             if ((drp_audenc_1.Text == "AAC") && (drp_audmix_1.Text == "6 Channel Discrete"))\r
@@ -1049,8 +993,6 @@ namespace Handbrake
                 drp_audbit_2.Items.Add("384");\r
             }\r
         }\r
-\r
-        // Audio Encoder Selection Changed\r
         private void drp_audenc_1_SelectedIndexChanged(object sender, EventArgs e)\r
         {\r
             if (drp_audenc_1.Text == "AC3")\r
@@ -1192,7 +1134,6 @@ namespace Handbrake
                 drp_audbit_2.Items.Add("320");\r
             }\r
         }\r
-\r
         private void slider_drc_Scroll(object sender, EventArgs e)\r
         {\r
             double value = slider_drc.Value / 10.0;\r
@@ -1200,7 +1141,6 @@ namespace Handbrake
 \r
             lbl_drc.Text = value.ToString();\r
         }\r
-\r
         private void drp_subtitle_SelectedIndexChanged(object sender, EventArgs e)\r
         {\r
             if (drp_subtitle.Text.Contains("None"))\r
@@ -1212,6 +1152,7 @@ namespace Handbrake
                 check_forced.Enabled = true;\r
         }\r
 \r
+        // Chapter Marker Tab\r
         private void Check_ChapterMarkers_CheckedChanged(object sender, EventArgs e)\r
         {\r
             if (Check_ChapterMarkers.Checked)\r
@@ -1233,143 +1174,87 @@ namespace Handbrake
             }\r
         }\r
 \r
-        private void drp_videoEncoder_SelectedIndexChanged(object sender, EventArgs e)\r
-        {\r
-            //Turn off some options which are H.264 only when the user selects a non h.264 encoder\r
-            if (!drp_videoEncoder.Text.Contains("H.264"))\r
-            {\r
-                check_turbo.CheckState = CheckState.Unchecked;\r
-                check_turbo.Enabled = false;\r
-                h264Tab.Enabled = false;\r
-                rtf_x264Query.Text = "";\r
-                check_iPodAtom.Enabled = false;\r
-                check_iPodAtom.Checked = false;\r
-                check_optimiseMP4.Enabled = false;\r
-                if (drp_anamorphic.Items.Count == 3)\r
-                    drp_anamorphic.Items.RemoveAt(2);\r
-            }\r
-            else\r
-            {\r
-                if (check_2PassEncode.CheckState == CheckState.Checked)\r
-                    check_turbo.Enabled = true;\r
-\r
-                h264Tab.Enabled = true;\r
-                check_iPodAtom.Enabled = true;\r
-                check_optimiseMP4.Enabled = true;\r
-                if (!drp_anamorphic.Items.Contains("Loose"))\r
-                    drp_anamorphic.Items.Add("Loose");\r
-            }\r
-\r
-        }\r
-\r
-        #endregion\r
-\r
-        #region Advanced H264 Options Changed\r
-\r
-        /*\r
-         * x264 widgets\r
-         */\r
+        // Advanced Tab\r
         private void drop_refFrames_SelectedIndexChanged(object sender, EventArgs e)\r
         {\r
             x264PanelFunctions.on_x264_WidgetChange("ref", this);\r
         }\r
-\r
         private void check_mixedReferences_CheckedChanged(object sender, EventArgs e)\r
         {\r
             x264PanelFunctions.on_x264_WidgetChange("mixed-refs", this);\r
         }\r
-\r
         private void drop_bFrames_SelectedIndexChanged(object sender, EventArgs e)\r
         {\r
             x264PanelFunctions.on_x264_WidgetChange("bframes", this);\r
         }\r
-\r
         private void drop_directPrediction_SelectedIndexChanged(object sender, EventArgs e)\r
         {\r
             x264PanelFunctions.on_x264_WidgetChange("direct", this);\r
         }\r
-\r
         private void check_weightedBFrames_CheckedChanged(object sender, EventArgs e)\r
         {\r
             x264PanelFunctions.on_x264_WidgetChange("weightb", this);\r
         }\r
-\r
         private void check_bFrameDistortion_CheckedChanged(object sender, EventArgs e)\r
         {\r
             x264PanelFunctions.on_x264_WidgetChange("brdo", this);\r
         }\r
-\r
         private void check_BidirectionalRefinement_CheckedChanged(object sender, EventArgs e)\r
         {\r
             x264PanelFunctions.on_x264_WidgetChange("bime", this);\r
         }\r
-\r
         private void check_pyrmidalBFrames_CheckedChanged(object sender, EventArgs e)\r
         {\r
             x264PanelFunctions.on_x264_WidgetChange("b-pyramid", this);\r
         }\r
-\r
         private void drop_MotionEstimationMethod_SelectedIndexChanged(object sender, EventArgs e)\r
         {\r
             x264PanelFunctions.on_x264_WidgetChange("me", this);\r
         }\r
-\r
         private void drop_MotionEstimationRange_SelectedIndexChanged(object sender, EventArgs e)\r
         {\r
             x264PanelFunctions.on_x264_WidgetChange("merange", this);\r
         }\r
-\r
         private void drop_subpixelMotionEstimation_SelectedIndexChanged(object sender, EventArgs e)\r
         {\r
             x264PanelFunctions.on_x264_WidgetChange("subq", this);\r
         }\r
-\r
         private void drop_analysis_SelectedIndexChanged(object sender, EventArgs e)\r
         {\r
             x264PanelFunctions.on_x264_WidgetChange("analyse", this);\r
         }\r
-\r
         private void check_8x8DCT_CheckedChanged(object sender, EventArgs e)\r
         {\r
             x264PanelFunctions.on_x264_WidgetChange("8x8dct", this);\r
         }\r
-\r
         private void drop_deblockAlpha_SelectedIndexChanged(object sender, EventArgs e)\r
         {\r
             x264PanelFunctions.on_x264_WidgetChange("deblock", this);\r
 \r
         }\r
-\r
         private void drop_deblockBeta_SelectedIndexChanged(object sender, EventArgs e)\r
         {\r
             x264PanelFunctions.on_x264_WidgetChange("deblock", this);\r
 \r
         }\r
-\r
         private void drop_trellis_SelectedIndexChanged(object sender, EventArgs e)\r
         {\r
             x264PanelFunctions.on_x264_WidgetChange("trellis", this);\r
         }\r
-\r
         private void check_noFastPSkip_CheckedChanged(object sender, EventArgs e)\r
         {\r
             x264PanelFunctions.on_x264_WidgetChange("no-fast-pskip", this);\r
         }\r
-\r
         private void check_noDCTDecimate_CheckedChanged(object sender, EventArgs e)\r
         {\r
             x264PanelFunctions.on_x264_WidgetChange("no-dct-decimate", this);\r
 \r
         }\r
-\r
         private void check_Cabac_CheckedChanged(object sender, EventArgs e)\r
         {\r
             x264PanelFunctions.on_x264_WidgetChange("cabac", this);\r
         }\r
 \r
-        /*\r
-         * Buttons and x264 RTF Box\r
-         */\r
         private void rtf_x264Query_TextChanged(object sender, EventArgs e)\r
         {\r
             if (rtf_x264Query.Text.EndsWith("\n"))\r
@@ -1382,82 +1267,56 @@ namespace Handbrake
                     x264PanelFunctions.reset2Defaults(this);\r
             }\r
         }\r
-\r
         private void btn_reset_Click(object sender, EventArgs e)\r
         {\r
             rtf_x264Query.Text = "";\r
             x264PanelFunctions.reset2Defaults(this);\r
         }\r
 \r
-        #endregion\r
-\r
-        #region Query Editor Tab\r
-\r
-        private void btn_clear_Click(object sender, EventArgs e)\r
-        {\r
-            rtf_query.Clear();\r
-        }\r
-\r
+        // Query Editor Tab\r
         private void btn_generate_Query_Click(object sender, EventArgs e)\r
         {\r
             rtf_query.Text = hb_common_func.GenerateTheQuery(this);\r
         }\r
-\r
+        private void btn_clear_Click(object sender, EventArgs e)\r
+        {\r
+            rtf_query.Clear();\r
+        }\r
         private void btn_copy2C_Click(object sender, EventArgs e)\r
         {\r
             if (rtf_query.Text != "")\r
                 Clipboard.SetText(rtf_query.Text, TextDataFormat.Text);\r
         }\r
 \r
-        #endregion\r
-\r
-        // -------------------------------------------------------------- \r
-        // Main Window Preset System\r
-        // --------------------------------------------------------------\r
-\r
-        #region Preset System\r
-\r
-        // Import Current Presets\r
-        public void loadPresetPanel()\r
+        // Presets\r
+        private void btn_addPreset_Click(object sender, EventArgs e)\r
         {\r
-            treeView_presets.Nodes.Clear();\r
-            ArrayList presetNameList = new ArrayList();\r
+            Form preset = new frmAddPreset(this);\r
+            preset.ShowDialog();\r
+        }\r
+        private void btn_removePreset_Click(object sender, EventArgs e)\r
+        {\r
+            ArrayList user_presets = new ArrayList();\r
+            ArrayList modified_presets_list = new ArrayList();\r
+            string selectedPreset = null;\r
+            selectedPreset = treeView_presets.SelectedNode.Text;\r
 \r
-            // Load in the built in presets from presets.dat\r
-            string filePath = Application.StartupPath.ToString() + "\\presets.dat";\r
-            if (File.Exists(filePath))\r
-            {\r
-                StreamReader presetInput = new StreamReader(filePath);\r
-                while (!presetInput.EndOfStream)\r
-                {\r
-                    if ((char)presetInput.Peek() == '+')\r
-                    {\r
-                        string preset = presetInput.ReadLine().Replace("+ ", "");\r
-                        Regex r = new Regex("(:  )"); // Split on hyphens. \r
-                        presetNameList.Add(r.Split(preset));\r
-                    }\r
-                    else\r
-                        presetInput.ReadLine();\r
-                }\r
+            if (!selectedPreset.StartsWith("--"))\r
+                MessageBox.Show("Sorry, You can not remove any of the built in presets.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);\r
 \r
-                presetInput.Close();\r
-                presetInput.Dispose();\r
-            }\r
-            addPresetToList(presetNameList);\r
-            presetNameList.Clear();\r
 \r
-            // Load in the users presets from user_presets.dat\r
-            filePath = Application.StartupPath.ToString() + "\\user_presets.dat";\r
-            if (File.Exists(filePath))\r
+            // Scan through the users presets and dump them all in an arraylist\r
+            string userPresets = Application.StartupPath.ToString() + "\\user_presets.dat";\r
+            if (File.Exists(userPresets))\r
             {\r
-                StreamReader presetInput = new StreamReader(filePath);\r
+                StreamReader presetInput = new StreamReader(userPresets);\r
                 while (!presetInput.EndOfStream)\r
                 {\r
                     if ((char)presetInput.Peek() == '+')\r
                     {\r
-                        string preset = "--" + presetInput.ReadLine().Replace("+ ", "");\r
-                        Regex r = new Regex("(:  )"); // Split on hyphens. \r
-                        presetNameList.Add(r.Split(preset));\r
+                        string item = presetInput.ReadLine();\r
+                        user_presets.Add(item);\r
+                        modified_presets_list.Add(item);\r
                     }\r
                     else\r
                         presetInput.ReadLine();\r
@@ -1466,60 +1325,30 @@ namespace Handbrake
                 presetInput.Close();\r
                 presetInput.Dispose();\r
             }\r
-            addPresetToList(presetNameList);\r
-        }\r
 \r
-        private void addPresetToList(ArrayList presetNameList)\r
-        {\r
-            TreeNode preset_treeview = new TreeNode();\r
-            foreach (string[] preset in presetNameList)\r
+            // now lets scan through the arraylist and remove the preset with the\r
+            // same name as the one selected.\r
+            int c = 0;\r
+            foreach (string item in user_presets)\r
             {\r
-                preset_treeview = new TreeNode(preset[0]);\r
-\r
-                // Now Fill Out List View with Items\r
-                treeView_presets.Nodes.Add(preset_treeview);\r
+                string preset_name = selectedPreset.Replace("--", "");\r
+                if (item.Contains(preset_name))\r
+                    modified_presets_list.RemoveAt(c);\r
+                c++;\r
             }\r
-        }\r
 \r
-        // Generate a new presets.dat file from the CLI\r
-        private void grabCLIPresets()\r
-        {\r
-            string appPath = Application.StartupPath.ToString() + "\\";\r
-            string strCmdLine = "cmd /c " + '"' + '"' + appPath + "HandBrakeCLI.exe" + '"' + " --preset-list >" + '"' + appPath + "presets.dat" + '"' + " 2>&1" + '"';\r
-            Process hbproc = Process.Start("CMD.exe", strCmdLine);\r
-            hbproc.WaitForExit();\r
-            hbproc.Dispose();\r
-            hbproc.Close();\r
-        }\r
-\r
-        // Selects the preset called "normal". This is HandBrakes default settings\r
-        private void loadNormalPreset()\r
-        {\r
-            try\r
-            {\r
-                string appPath = Application.StartupPath.ToString() + "\\presets.dat";\r
-                if (File.Exists(appPath))\r
-                {\r
-\r
-                    int normal = 0;\r
-                    foreach (TreeNode treenode in treeView_presets.Nodes)\r
-                    {\r
-                        if (treenode.ToString().Equals("TreeNode: Normal"))\r
-                            normal = treenode.Index;\r
-                    }\r
-\r
-                    TreeNode np = treeView_presets.Nodes[normal];\r
-\r
-                    treeView_presets.SelectedNode = np;\r
-                }\r
-            }\r
-            catch (Exception)\r
+            // Now we need to rebuilt the user presets file.\r
+            StreamWriter line = new StreamWriter(userPresets);\r
+            foreach (string item in modified_presets_list)\r
             {\r
-                // Do nothing\r
+                line.WriteLine(item);\r
             }\r
-        }\r
+            line.Close();\r
+            line.Dispose();\r
 \r
-        // Set's the current options set in the program as the new defaults for the program.\r
+            // Now reload the preset panel\r
+            loadPresetPanel();\r
+        }\r
         private void btn_setDefault_Click(object sender, EventArgs e)\r
         {\r
             String query = hb_common_func.GenerateTheQuery(this);\r
@@ -1528,10 +1357,9 @@ namespace Handbrake
             Properties.Settings.Default.Save();\r
             MessageBox.Show("New default settings saved.", "Alert", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);\r
         }\r
-\r
-        // When the user select a preset from the treeview, load it\r
         private void treeView_presets_AfterSelect(object sender, TreeViewEventArgs e)\r
         {\r
+            //When the user select a preset from the treeview, load it\r
             try\r
             {\r
                 // Scan through the built in presets\r
@@ -1579,60 +1407,138 @@ namespace Handbrake
             }\r
         }\r
 \r
-        private void checkSelectedPreset(string preset)\r
+        #endregion\r
+\r
+        #region Functions\r
+        // DVD Parsing\r
+        public void setStreamReader(Parsing.DVD dvd)\r
         {\r
-            string selectedPreset = null;\r
-            selectedPreset = treeView_presets.SelectedNode.Text;\r
+            this.thisDVD = dvd;\r
+        }\r
 \r
-            Regex r = new Regex("(:  )"); // Split on hyphens. \r
-            string[] presetName = r.Split(preset);\r
+        // Audio system functions\r
+        private void setAudioByContainer(String path)\r
+        {\r
+            if ((path.EndsWith(".mp4")) || (path.EndsWith(".mp4")))\r
+            {\r
+                drp_audenc_1.Items.Clear();\r
+                drp_audenc_1.Items.Add("AAC");\r
+                drp_audenc_1.SelectedIndex = 0;\r
 \r
-            if ((selectedPreset == (presetName[0])) || (selectedPreset == ("--" + presetName[0])))\r
+                drp_audenc_2.Items.Clear();\r
+                drp_audenc_2.Items.Add("AAC");\r
+                if (drp_audenc_2.Enabled)\r
+                    drp_audenc_2.SelectedIndex = 0;\r
+            }\r
+            else if (path.EndsWith(".avi"))\r
             {\r
-                //Ok, Reset all the H264 widgets before changing the preset\r
-                x264PanelFunctions.reset2Defaults(this);\r
+                drp_audenc_1.Items.Clear();\r
+                drp_audenc_1.Items.Add("MP3");\r
+                drp_audenc_1.Items.Add("AC3");\r
+                drp_audenc_1.SelectedIndex = 0;\r
 \r
-                // Send the query from the file to the Query Parser class\r
-                Functions.QueryParser presetQuery = Functions.QueryParser.Parse(preset);\r
+                drp_audenc_2.Items.Clear();\r
+                drp_audenc_2.Items.Add("MP3");\r
+                drp_audenc_2.Items.Add("AC3");\r
+                if (drp_audenc_2.Enabled)\r
+                    drp_audenc_2.SelectedIndex = 0;\r
+            }\r
+            else if (path.EndsWith(".ogm"))\r
+            {\r
+                drp_audenc_1.Items.Clear();\r
+                drp_audenc_1.Items.Add("Vorbis");\r
+                drp_audenc_1.SelectedIndex = 0;\r
 \r
-                // Now load the preset\r
-                hb_common_func.presetLoader(this, presetQuery, selectedPreset);\r
+                drp_audenc_2.Items.Clear();\r
+                drp_audenc_2.Items.Add("Vorbis");\r
+                if (drp_audenc_2.Enabled)\r
+                    drp_audenc_2.SelectedIndex = 0;\r
+            }\r
+            else if (path.EndsWith(".mkv"))\r
+            {\r
+                drp_audenc_1.Items.Clear();\r
+                drp_audenc_1.Items.Add("AAC");\r
+                drp_audenc_1.Items.Add("MP3");\r
+                drp_audenc_1.Items.Add("AC3");\r
+                drp_audenc_1.Items.Add("Vorbis");\r
+                drp_audenc_1.SelectedIndex = 0;\r
 \r
-                // The x264 widgets will need updated, so do this now:\r
-                x264PanelFunctions.X264_StandardizeOptString(this);\r
-                x264PanelFunctions.X264_SetCurrentSettingsInPanel(this);\r
+                drp_audenc_2.Items.Clear();\r
+                drp_audenc_2.Items.Add("AAC");\r
+                drp_audenc_2.Items.Add("MP3");\r
+                drp_audenc_2.Items.Add("AC3");\r
+                drp_audenc_2.Items.Add("Vorbis");\r
+                if (drp_audenc_2.Enabled)\r
+                    drp_audenc_2.SelectedIndex = 0;\r
             }\r
         }\r
 \r
-        private void btn_addPreset_Click(object sender, EventArgs e)\r
+        // Preset system functions\r
+        private void addPresetToList(ArrayList presetNameList)\r
         {\r
-            Form preset = new frmAddPreset(this);\r
-            preset.ShowDialog();\r
-        }\r
+            // Adds a new preset name to the preset list.\r
+            TreeNode preset_treeview = new TreeNode();\r
+            foreach (string[] preset in presetNameList)\r
+            {\r
+                preset_treeview = new TreeNode(preset[0]);\r
 \r
-        private void btn_removePreset_Click(object sender, EventArgs e)\r
+                // Now Fill Out List View with Items\r
+                treeView_presets.Nodes.Add(preset_treeview);\r
+            }\r
+        }\r
+        private void grabCLIPresets()\r
         {\r
-            ArrayList user_presets = new ArrayList();\r
-            ArrayList modified_presets_list = new ArrayList();\r
-            string selectedPreset = null;\r
-            selectedPreset = treeView_presets.SelectedNode.Text;\r
+            // Gets the presets from the CLI and stores them in presets.dat\r
+            string appPath = Application.StartupPath.ToString() + "\\";\r
+            string strCmdLine = "cmd /c " + '"' + '"' + appPath + "HandBrakeCLI.exe" + '"' + " --preset-list >" + '"' + appPath + "presets.dat" + '"' + " 2>&1" + '"';\r
+            Process hbproc = Process.Start("CMD.exe", strCmdLine);\r
+            hbproc.WaitForExit();\r
+            hbproc.Dispose();\r
+            hbproc.Close();\r
+        }\r
+        private void loadNormalPreset()\r
+        {\r
+            //Loads the preset called "normal"\r
+            try\r
+            {\r
+                string appPath = Application.StartupPath.ToString() + "\\presets.dat";\r
+                if (File.Exists(appPath))\r
+                {\r
 \r
-            if (!selectedPreset.StartsWith("--"))\r
-                MessageBox.Show("Sorry, You can not remove any of the built in presets.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);\r
+                    int normal = 0;\r
+                    foreach (TreeNode treenode in treeView_presets.Nodes)\r
+                    {\r
+                        if (treenode.ToString().Equals("TreeNode: Normal"))\r
+                            normal = treenode.Index;\r
+                    }\r
 \r
+                    TreeNode np = treeView_presets.Nodes[normal];\r
 \r
-            // Scan through the users presets and dump them all in an arraylist\r
-            string userPresets = Application.StartupPath.ToString() + "\\user_presets.dat";\r
-            if (File.Exists(userPresets))\r
+                    treeView_presets.SelectedNode = np;\r
+                }\r
+            }\r
+            catch (Exception)\r
             {\r
-                StreamReader presetInput = new StreamReader(userPresets);\r
+                // Do nothing\r
+            }\r
+        }\r
+        public void loadPresetPanel()\r
+        {\r
+            treeView_presets.Nodes.Clear();\r
+            ArrayList presetNameList = new ArrayList();\r
+\r
+            // Load in the built in presets from presets.dat\r
+            string filePath = Application.StartupPath.ToString() + "\\presets.dat";\r
+            if (File.Exists(filePath))\r
+            {\r
+                StreamReader presetInput = new StreamReader(filePath);\r
                 while (!presetInput.EndOfStream)\r
                 {\r
                     if ((char)presetInput.Peek() == '+')\r
                     {\r
-                        string item = presetInput.ReadLine();\r
-                        user_presets.Add(item);\r
-                        modified_presets_list.Add(item);\r
+                        string preset = presetInput.ReadLine().Replace("+ ", "");\r
+                        Regex r = new Regex("(:  )"); // Split on hyphens. \r
+                        presetNameList.Add(r.Split(preset));\r
                     }\r
                     else\r
                         presetInput.ReadLine();\r
@@ -1641,93 +1547,74 @@ namespace Handbrake
                 presetInput.Close();\r
                 presetInput.Dispose();\r
             }\r
+            addPresetToList(presetNameList);\r
+            presetNameList.Clear();\r
 \r
-            // now lets scan through the arraylist and remove the preset with the\r
-            // same name as the one selected.\r
-            int c = 0;\r
-            foreach (string item in user_presets)\r
+            // Load in the users presets from user_presets.dat\r
+            filePath = Application.StartupPath.ToString() + "\\user_presets.dat";\r
+            if (File.Exists(filePath))\r
             {\r
-                string preset_name = selectedPreset.Replace("--", "");\r
-                if (item.Contains(preset_name))\r
-                    modified_presets_list.RemoveAt(c);\r
-                c++;\r
-            }\r
+                StreamReader presetInput = new StreamReader(filePath);\r
+                while (!presetInput.EndOfStream)\r
+                {\r
+                    if ((char)presetInput.Peek() == '+')\r
+                    {\r
+                        string preset = "--" + presetInput.ReadLine().Replace("+ ", "");\r
+                        Regex r = new Regex("(:  )"); // Split on hyphens. \r
+                        presetNameList.Add(r.Split(preset));\r
+                    }\r
+                    else\r
+                        presetInput.ReadLine();\r
+                }\r
 \r
-            // Now we need to rebuilt the user presets file.\r
-            StreamWriter line = new StreamWriter(userPresets);\r
-            foreach (string item in modified_presets_list)\r
-            {\r
-                line.WriteLine(item);\r
+                presetInput.Close();\r
+                presetInput.Dispose();\r
             }\r
-            line.Close();\r
-            line.Dispose();\r
-\r
-            // Now reload the preset panel\r
-            loadPresetPanel();\r
+            addPresetToList(presetNameList);\r
         }\r
+        private void checkSelectedPreset(string preset)\r
+        {\r
+            string selectedPreset = null;\r
+            selectedPreset = treeView_presets.SelectedNode.Text;\r
 \r
-        #endregion\r
-\r
-        //---------------------------------------------------\r
-        // Encode / Cancel Buttons\r
-        // Encode Progress Text Handler\r
-        //---------------------------------------------------\r
-\r
-        #region Encodeing and Queue\r
-\r
-        Functions.CLI process = new Functions.CLI();\r
-        private delegate void UpdateUIHandler();\r
-\r
-        [DllImport("user32.dll")]\r
-        public static extern void LockWorkStation();\r
-        [DllImport("user32.dll")]\r
-        public static extern int ExitWindowsEx(int uFlags, int dwReason);\r
+            Regex r = new Regex("(:  )"); // Split on hyphens. \r
+            string[] presetName = r.Split(preset);\r
 \r
-        private void btn_start_Click(object sender, EventArgs e)\r
-        {\r
-            if (text_source.Text == "" || text_source.Text == "Click 'Browse' to continue" || text_destination.Text == "")\r
-                MessageBox.Show("No source OR destination selected.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);\r
-            else\r
+            if ((selectedPreset == (presetName[0])) || (selectedPreset == ("--" + presetName[0])))\r
             {\r
-                String query;\r
-                if (rtf_query.Text != "")\r
-                    query = rtf_query.Text;\r
-                else\r
-                    query = hb_common_func.GenerateTheQuery(this);\r
+                //Ok, Reset all the H264 widgets before changing the preset\r
+                x264PanelFunctions.reset2Defaults(this);\r
 \r
-                ThreadPool.QueueUserWorkItem(procMonitor, query);\r
-                lbl_encode.Visible = true;\r
-                lbl_encode.Text = "Encoding in Progress";\r
-            }\r
-        }\r
+                // Send the query from the file to the Query Parser class\r
+                Functions.QueryParser presetQuery = Functions.QueryParser.Parse(preset);\r
 \r
-        private void btn_add2Queue_Click(object sender, EventArgs e)\r
-        {\r
-            if (text_source.Text == "" || text_source.Text == "Click 'Browse' to continue" || text_destination.Text == "")\r
-                MessageBox.Show("No source OR destination selected.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);\r
-            else\r
-            {\r
-                String query;\r
-                if (rtf_query.Text != "")\r
-                    query = rtf_query.Text;\r
-                else\r
-                    query = hb_common_func.GenerateTheQuery(this);\r
+                // Now load the preset\r
+                hb_common_func.presetLoader(this, presetQuery, selectedPreset);\r
 \r
-                queueWindow.list_queue.Items.Add(query);\r
-                queueWindow.Show();\r
+                // The x264 widgets will need updated, so do this now:\r
+                x264PanelFunctions.X264_StandardizeOptString(this);\r
+                x264PanelFunctions.X264_SetCurrentSettingsInPanel(this);\r
             }\r
         }\r
 \r
-        private void btn_showQueue_Click(object sender, EventArgs e)\r
-        {\r
-            showQueue();\r
-        }\r
-\r
+        // Queue system functions\r
         private void showQueue()\r
         {\r
             queueWindow.Show();\r
         }\r
+        #endregion\r
+\r
+        #region Encoding and Queue\r
 \r
+        // Declarations\r
+        Functions.CLI process = new Functions.CLI();\r
+        private delegate void UpdateUIHandler();\r
+        [DllImport("user32.dll")]\r
+        public static extern void LockWorkStation();\r
+        [DllImport("user32.dll")]\r
+        public static extern int ExitWindowsEx(int uFlags, int dwReason);\r
+\r
+        // Encoding Functions\r
         private void procMonitor(object state)\r
         {\r
             // Make sure we are not already encoding and if we are then display an error.\r
@@ -1738,7 +1625,7 @@ namespace Handbrake
                 hbProc = process.runCli(this, (string)state, false, false, false, false);\r
                 hbProc.WaitForExit();\r
 \r
-                setEncodeLabel();\r
+                setEncodeLabelFinished();\r
                 hbProc = null;\r
 \r
                 // Do something whent he encode ends.\r
@@ -1767,12 +1654,11 @@ namespace Handbrake
                 }\r
             }\r
         }\r
-\r
-        private void setEncodeLabel()\r
+        private void setEncodeLabelFinished()\r
         {\r
             if (this.InvokeRequired)\r
             {\r
-                this.BeginInvoke(new UpdateUIHandler(setEncodeLabel));\r
+                this.BeginInvoke(new UpdateUIHandler(setEncodeLabelFinished));\r
                 return;\r
             }\r
             lbl_encode.Text = "Encoding Finished";\r
@@ -1780,63 +1666,6 @@ namespace Handbrake
 \r
         #endregion\r
 \r
-        private void button1_Click(object sender, EventArgs e)\r
-        {\r
-            string filename;\r
-            File_Open.ShowDialog();\r
-            filename = File_Open.FileName;\r
-\r
-            if (filename != "")\r
-            {\r
-                try\r
-                {\r
-                    // Create StreamReader & open file\r
-                    StreamReader line = new StreamReader(filename);\r
-\r
-                    // Send the query from the file to the Query Parser class then load the preset\r
-                    Functions.QueryParser presetQuery = Functions.QueryParser.Parse(line.ReadLine());\r
-                    hb_common_func.presetLoader(this, presetQuery, filename);\r
-\r
-                    // Close the stream\r
-                    line.Close();\r
-\r
-                }\r
-                catch (Exception exc)\r
-                {\r
-                    MessageBox.Show("Unable to load profile. \n\n" + exc.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand);\r
-                }\r
-            }\r
-        }\r
-\r
-        private void button2_Click(object sender, EventArgs e)\r
-        {\r
-            string filename;\r
-            File_Save.ShowDialog();\r
-            filename = File_Save.FileName;\r
-            if (filename != "")\r
-            {\r
-                try\r
-                {\r
-                    // Create a StreamWriter and open the file\r
-                    StreamWriter line = new StreamWriter(filename);\r
-\r
-                    // Generate and write the query string to the file\r
-                    String query = hb_common_func.GenerateTheQuery(this);\r
-                    line.WriteLine(query);\r
-\r
-                    // close the stream\r
-                    line.Close();\r
-                    MessageBox.Show("Your profile has been sucessfully saved.", "Status", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);\r
-                }\r
-                catch (Exception)\r
-                {\r
-                    MessageBox.Show("Unable to write to the file. Please make sure the location has the correct permissions for file writing.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand);\r
-                }\r
-\r
-            }\r
-        }\r
-\r
-\r
 \r
         // This is the END of the road ------------------------------------------------------------------------------\r
     }\r
index 8f2c94a..e91100b 100644 (file)
@@ -176,22 +176,6 @@ Note: Do not change any of the chapter numbers!</value>
         AAAAAElFTkSuQmCC\r
 </value>\r
   </data>\r
-  <data name="mnu_save.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">\r
-    <value>\r
-        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8\r
-        YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAixJREFUOE+tk91L\r
-        k3EUx/cvdN9N0EW3NTWGa7EaPOUcyqphWBG9PZEv5dJlmqhYmUYtXyBb4dJJy+kknFT4BqZIjaFMJUsz\r
-        V7TEoabYRDD49ju/6Pm1Mi+iH5zLz+c855zvo1L9j/fsaRRUvvZltHmX8Ni9gMaGCO47ZlBb8wn22yHc\r
-        KJ9CackECgteIy93FBfOB6H0JrC3B6ipXsVGb2V1Dca0XhxOe8JLEXhbF7mgsuLLX3mCIwsr2G1+DrVa\r
-        huWQRwjcj+a5oLTk87qCn/D78CLiTD4UXJ7GAXOTEDjrZ7ngku3dH4Jf4ZHJCLZJXlhzxpGa4hSCurth\r
-        LsjOGo0R/A4PBsPYrHdDlgMwmRxCUF31kQvkMwFFsB7c4/+ATYkNOHL0BZKSaoXgZuU0urvATgkcP/kK\r
-        lmMDfNu0MJqZPps6/4D7cNDSCUmyC8HVskl0+MAyADS5vrG7f0X59Tm+VFoYzZyZEVTg5NR2GAwVQnCl\r
-        cByeZuChc40FJwpjek5MmU/YkH6uiHdOTmHwfg/0+jIhsOWNMRiouhPlnUnAQoI4rYSht7MYm5qDnHsN\r
-        e41tHNbucUGnKxICiqXjHpTPJgHBZ/Nv4U1oHqGZJVwstiNe72JwI+J3PYA2MV8IMjOG2dzLfOatBg+2\r
-        7JDQ0tEPX9cguvv8GHg5hH0mC9S6eiQweLumDhqNVQgo06dP9fN4UsIoJHRnOhVtmxZGM1NXKoJ3JmTH\r
-        Cv71r/4OTrQ4xWMwWlcAAAAASUVORK5CYII=\r
-</value>\r
-  </data>\r
   <metadata name="frmMainMenu.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">\r
     <value>106, 15</value>\r
   </metadata>\r