OSDN Git Service

WinGui:
authorsr55 <sr55@b64f7644-9d1e-0410-96f1-a4d463321fa5>
Tue, 8 Dec 2009 15:12:12 +0000 (15:12 +0000)
committersr55 <sr55@b64f7644-9d1e-0410-96f1-a4d463321fa5>
Tue, 8 Dec 2009 15:12:12 +0000 (15:12 +0000)
- Added some code to recover from corrupted preset files. This will hopefully fix at least 1 cause of the CLR20r3 .NET error

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

win/C#/Presets/PresetsHandler.cs

index 8d1da12..05c0243 100644 (file)
@@ -168,7 +168,8 @@ namespace Handbrake.Presets
                         string[] presetName = r.Split(line);\r
 \r
                         Preset newPreset = new Preset\r
-                                               {   Category = category,\r
+                                               {\r
+                                                   Category = category,\r
                                                    Name = presetName[0].Replace("+", "").Trim(),\r
                                                    Query = presetName[2],\r
                                                    Version = Properties.Settings.Default.hb_version,\r
@@ -195,37 +196,69 @@ namespace Handbrake.Presets
             _presets.Clear();\r
             _userPresets.Clear();\r
 \r
-            // Load in the users _presets from _userPresets.xml\r
-            if (File.Exists(_hbPresetFile))\r
+            try\r
             {\r
-                using (FileStream strm = new FileStream(_hbPresetFile, FileMode.Open, FileAccess.Read))\r
+                // Load in the users _presets from _userPresets.xml\r
+                if (File.Exists(_hbPresetFile))\r
                 {\r
-                    if (strm.Length != 0)\r
+                    using (FileStream strm = new FileStream(_hbPresetFile, FileMode.Open, FileAccess.Read))\r
                     {\r
-                        List<Preset> list = Ser.Deserialize(strm) as List<Preset>;\r
-\r
-                        if (list != null)\r
-                            foreach (Preset preset in list)\r
-                                _presets.Add(preset);\r
+                        if (strm.Length != 0)\r
+                        {\r
+                            List<Preset> list = Ser.Deserialize(strm) as List<Preset>;\r
+\r
+                            if (list != null)\r
+                                foreach (Preset preset in list)\r
+                                    _presets.Add(preset);\r
+                        }\r
                     }\r
                 }\r
             }\r
+            catch (Exception)\r
+            {\r
+                MessageBox.Show(\r
+                    "HandBrakes preset file appears to have been corrupted. This file will now be re-generated!\n" +\r
+                    "If the problem presists, please delete the file: \n\n" + _hbPresetFile, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);\r
+                UpdateBuiltInPresets();\r
+            }\r
 \r
-            // Load in the users _presets from _userPresets.xml\r
-            if (File.Exists(_userPresetFile))\r
+            try\r
             {\r
-                using (FileStream strm = new FileStream(_userPresetFile, FileMode.Open, FileAccess.Read))\r
+                // Load in the users _presets from _userPresets.xml\r
+                if (File.Exists(_userPresetFile))\r
                 {\r
-                    if (strm.Length != 0)\r
+                    using (FileStream strm = new FileStream(_userPresetFile, FileMode.Open, FileAccess.Read))\r
                     {\r
-                        List<Preset> list = Ser.Deserialize(strm) as List<Preset>;\r
-\r
-                        if (list != null)\r
-                            foreach (Preset preset in list)\r
-                                _userPresets.Add(preset);\r
+                        if (strm.Length != 0)\r
+                        {\r
+                            List<Preset> list = Ser.Deserialize(strm) as List<Preset>;\r
+\r
+                            if (list != null)\r
+                                foreach (Preset preset in list)\r
+                                    _userPresets.Add(preset);\r
+                        }\r
                     }\r
                 }\r
             }\r
+            catch (Exception)\r
+            {\r
+                MessageBox.Show(\r
+                    "Your User presets file appears to have been corrupted.\n" +\r
+                    "Your presets will not be loaded. You may need to re-create your presets.\n\n" +\r
+                    "Your user presets file has been renamed to 'user_presets.xml.old' and is located in:\n " +\r
+                    Path.GetDirectoryName(_userPresetFile) + "\n" +\r
+                    "You may be able to recover some presets if you know the XML language.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);\r
+\r
+                // Recover from Error.\r
+                if (File.Exists(_userPresetFile))\r
+                {\r
+                    string disabledFile = _userPresetFile + ".old";\r
+                    if (File.Exists(disabledFile))\r
+                        File.Delete(disabledFile);\r
+                    File.Move(_userPresetFile, disabledFile);\r
+                }\r
+\r
+            }\r
         }\r
 \r
         /// <summary>\r
@@ -241,7 +274,7 @@ namespace Handbrake.Presets
 \r
             if (_presets.Count != 0) // Built In Presets\r
             {\r
-                \r
+\r
                 foreach (Preset preset in _presets)\r
                 {\r
                     if (preset.Category != category)\r