OSDN Git Service

WinGui:
authorsr55 <sr55@b64f7644-9d1e-0410-96f1-a4d463321fa5>
Wed, 16 Jan 2008 22:25:43 +0000 (22:25 +0000)
committersr55 <sr55@b64f7644-9d1e-0410-96f1-a4d463321fa5>
Wed, 16 Jan 2008 22:25:43 +0000 (22:25 +0000)
- Better presets panel implementation. Preset names are now loaded from file rather than being pre-set in the application.

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

win/C#/frmMain.cs

index 8d80d03..76d9552 100644 (file)
@@ -5,8 +5,7 @@
           It may be used under the terms of the GNU General Public License. */\r
 \r
 using System;\r
-using System.Collections.Generic;\r
-using System.Collections.Specialized;\r
+using System.Collections;\r
 using System.ComponentModel;\r
 using System.Data;\r
 using System.Drawing;\r
@@ -73,18 +72,12 @@ namespace Handbrake
                 Thread.Sleep(100);\r
             }\r
 \r
-            // Update the presets\r
-            if (Properties.Settings.Default.updatePresets == "Checked")\r
-            {\r
-                lblStatus.Text = "Updaing Presets ...";\r
-                Application.DoEvents();\r
-                grabCLIPresets();\r
-                Thread.Sleep(200);\r
-            }\r
-\r
-            // Load the presets for the preset box\r
-            updatePresets();\r
-\r
+            // Load the presets\r
+            lblStatus.Text = "Loading Presets ...";\r
+            Application.DoEvents();\r
+            loadPresetPanel();\r
+            Thread.Sleep(200);\r
+      \r
             // Now load the users default if required. (Will overide the above setting)\r
             if (Properties.Settings.Default.defaultSettings == "Checked")\r
             {\r
@@ -283,8 +276,11 @@ namespace Handbrake
         {\r
             treeView_presets.Nodes.Clear();\r
             grabCLIPresets();\r
-            updatePresets();\r
-            MessageBox.Show("Presets have been updated", "Alert", MessageBoxButtons.OK, MessageBoxIcon.Information);\r
+            loadPresetPanel();\r
+            if (treeView_presets.Nodes.Count == 0)\r
+                MessageBox.Show("Unable to load the presets.dat file. Please select \"Update Built-in Presets\" from the Presets Menu \nMake sure you are running the program in Admin mode if running on Vista. See Windows FAQ for details!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);\r
+            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
@@ -949,38 +945,38 @@ namespace Handbrake
         #region Preset System\r
 \r
         // Import Current Presets\r
-        private void updatePresets()\r
+        private void loadPresetPanel()\r
         {\r
-            string[] presets = new string[17];\r
-            presets[0] = "Animation";\r
-            presets[1] = "AppleTV";\r
-            presets[2] = "Bedlam";\r
-            presets[3] = "Blind";\r
-            presets[4] = "Broke";\r
-            presets[5] = "Classic";\r
-            presets[6] = "Constant Quality Rate";\r
-            presets[7] = "Deux Six Quatre";\r
-            presets[8] = "Film";\r
-            presets[9] = "iPhone / iPod Touch";\r
-            presets[10] = "iPod High-Rez";\r
-            presets[11] = "iPod Low-Rez";\r
-            presets[12] = "Normal";\r
-            presets[13] = "PS3";\r
-            presets[14] = "PSP";\r
-            presets[15] = "QuickTime";\r
-            presets[16] = "Television";\r
-\r
+            ArrayList presetNameList = new ArrayList();\r
+       \r
+                string appPath = Application.StartupPath.ToString() + "\\presets.dat";\r
+                if (File.Exists(appPath))\r
+                {\r
+                    StreamReader presetInput = new StreamReader(appPath);\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
+         \r
             TreeNode preset_treeview = new TreeNode();\r
-\r
-            foreach (string preset in presets)\r
+            foreach (string[] preset in presetNameList)\r
             {\r
-                preset_treeview = new TreeNode(preset);\r
+                preset_treeview = new TreeNode(preset[0]);\r
 \r
                 // Now Fill Out List View with Items\r
                 treeView_presets.Nodes.Add(preset_treeview);\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
@@ -991,27 +987,34 @@ namespace Handbrake
             hbproc.Close();\r
         }\r
 \r
-        // Function to select the default preset.\r
+        // Selects the preset called "normal". This is HandBrakes default settings\r
         private void loadNormalPreset()\r
         {\r
-            string appPath = Application.StartupPath.ToString() + "\\presets.dat";\r
-            if (File.Exists(appPath))\r
+            try\r
             {\r
-\r
-                int normal = 0;\r
-                foreach (TreeNode treenode in treeView_presets.Nodes)\r
+                string appPath = Application.StartupPath.ToString() + "\\presets.dat";\r
+                if (File.Exists(appPath))\r
                 {\r
-                    if (treenode.ToString().Equals("TreeNode: Normal"))\r
-                        normal = treenode.Index;\r
-                }\r
 \r
-                TreeNode np = treeView_presets.Nodes[normal];\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
+                    treeView_presets.SelectedNode = np;\r
+                }\r
+            }\r
+            catch (Exception)\r
+            {\r
+                // Do nothing\r
             }\r
         }\r
 \r
-        // Buttons\r
+        // Set's the current options set in the program as the new defaults for the program.\r
         private void btn_setDefault_Click(object sender, EventArgs e)\r
         {\r
             String query = hb_common_func.GenerateTheQuery(this);\r
@@ -1021,7 +1024,7 @@ namespace Handbrake
             MessageBox.Show("New default settings saved.", "Alert", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);\r
         }\r
 \r
-        // Preset Selection\r
+        // When the user select a preset from the treeview, load it\r
         private void treeView_presets_AfterSelect(object sender, TreeViewEventArgs e)\r
         {\r
             string selectedPreset = null;\r
@@ -1041,7 +1044,6 @@ namespace Handbrake
                             Regex r = new Regex("(:  )"); // Split on hyphens. \r
                             string[] presetName = r.Split(preset);\r
 \r
-\r
                             if (selectedPreset == presetName[0])\r
                             {\r
                                 // Need to disable anamorphic now, otherwise it may overide the width / height values later.\r
@@ -1058,10 +1060,6 @@ namespace Handbrake
                             presetInput.ReadLine();\r
                     }\r
                 }\r
-                else\r
-                {\r
-                    MessageBox.Show("Unable to load the presets.dat file. Please select \"Update Built-in Presets\" from the Presets Menu \nMake sure you are running the program in Admin mode if running on Vista. See Windows FAQ for details!", "Error",  MessageBoxButtons.OK, MessageBoxIcon.Error);\r
-                }\r
             }\r
             catch (Exception exc)\r
             {\r