OSDN Git Service

WinGui:
[handbrake-jp/handbrake-jp-git.git] / win / C# / Program.cs
index 9596676..ff91746 100644 (file)
@@ -6,9 +6,14 @@
 namespace Handbrake\r
 {\r
     using System;\r
+    using System.Diagnostics;\r
     using System.IO;\r
     using System.Windows.Forms;\r
-    using Presets;\r
+\r
+    using HandBrake.ApplicationServices;\r
+\r
+    using Handbrake.Presets;\r
+    using Handbrake.Properties;\r
 \r
     /// <summary>\r
     /// HandBrake Starts Here\r
@@ -18,30 +23,44 @@ namespace Handbrake
         /// <summary>\r
         /// The main entry point for the application.\r
         /// </summary>\r
+        /// <param name="args">\r
+        /// The args.\r
+        /// </param>\r
         [STAThread]\r
-        public static void Main()\r
+        public static void Main(string[] args)\r
         {\r
-            const string failedInstall = "HandBrake is not installed properly. Please reinstall HandBrake. \n\n";\r
-            const string nightlyCLIMissing =\r
+            InstanceId = Process.GetProcessesByName("HandBrake").Length;\r
+\r
+            // Handle any unhandled exceptions\r
+            AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);\r
+\r
+            // Attempt to upgrade / keep the users settings between versions\r
+            if (Settings.Default.UpdateRequired)\r
+            {\r
+                Settings.Default.Upgrade();\r
+                Settings.Default.UpdateRequired = false;\r
+            }\r
+\r
+            // Make sure we have any pre-requesits before trying to launch\r
+            const string FailedInstall = "HandBrake is not installed properly. Please reinstall HandBrake. \n\n";\r
+            const string NightlyCLIMissing =\r
                 "If you have downloaded the \"HandBrakeGUI\" nightly, " +\r
                 "please make sure you have also downloaded the \"HandBrakeCLI\" nightly and extracted it's contents to the same folder. ";\r
             string missingFiles = string.Empty;\r
 \r
-            // Verify HandBrakeCLI.exe and ilibgcc_s_sjlj-1.dll exists\r
+            // Verify HandBrakeCLI.exe exists\r
             if (!File.Exists(Path.Combine(Application.StartupPath, "HandBrakeCLI.exe")))\r
             {\r
                 missingFiles += "\"HandBrakeCLI.exe\" was not found.";\r
             }\r
 \r
-            if (!File.Exists(Path.Combine(Application.StartupPath, "libgcc_s_sjlj-1.dll")))\r
-            {\r
-                missingFiles += "\n\"libgcc_s_sjlj-1.dll\" was not found.";\r
-            }\r
-\r
             if (missingFiles != string.Empty)\r
             {\r
-                MessageBox.Show(failedInstall + missingFiles + "\n\n"+ nightlyCLIMissing, "Error", MessageBoxButtons.OK,\r
-                                MessageBoxIcon.Error);\r
+                MessageBox.Show(\r
+                    FailedInstall + missingFiles + "\n\n" + NightlyCLIMissing,\r
+                    "Error",\r
+                    MessageBoxButtons.OK,\r
+                    MessageBoxIcon.Error);\r
                 return;\r
             }\r
 \r
@@ -61,10 +80,49 @@ namespace Handbrake
                     x.UpdateBuiltInPresets();\r
                 }\r
 \r
+                InitializeApplicationServices();\r
+\r
                 Application.EnableVisualStyles();\r
                 Application.SetCompatibleTextRenderingDefault(false);\r
-                Application.Run(new frmMain());\r
+                Application.Run(new frmMain(args));\r
+            }\r
+        }\r
+\r
+        /// <summary>\r
+        /// Initialize App Services\r
+        /// </summary>\r
+        private static void InitializeApplicationServices()\r
+        {\r
+            string versionId = String.Format("Windows GUI {1} {0}", Settings.Default.hb_build, Settings.Default.hb_version);\r
+            Init.SetupSettings(versionId, InstanceId, Settings.Default.CompletionOption, Settings.Default.noDvdNav,\r
+                               Settings.Default.growlEncode, Settings.Default.growlQueue,\r
+                               Settings.Default.processPriority, Settings.Default.saveLogPath, Settings.Default.saveLogToSpecifiedPath,\r
+                               Settings.Default.saveLogWithVideo, Settings.Default.showCliForInGuiEncodeStatus, Settings.Default.preventSleep);\r
+        }\r
+\r
+        /// <summary>\r
+        /// Throw up an error message for any unhandled exceptions.\r
+        /// </summary>\r
+        /// <param name="sender">The sender</param>\r
+        /// <param name="e">Unhandled Exception EventArgs </param>\r
+        private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)\r
+        {\r
+            try\r
+            {\r
+                frmExceptionWindow exceptionWindow = new frmExceptionWindow();\r
+                exceptionWindow.Setup("An Unknown Error has occured.", e.ExceptionObject.ToString());\r
+                exceptionWindow.ShowDialog();\r
+            }\r
+            catch (Exception)\r
+            {\r
+                MessageBox.Show(\r
+                    "An Unknown Error has occured. \n\n Exception:" + e.ExceptionObject,\r
+                    "Unhandled Exception",\r
+                    MessageBoxButtons.OK,\r
+                    MessageBoxIcon.Error);\r
             }\r
         }\r
+\r
+        public static int InstanceId;\r
     }\r
 }
\ No newline at end of file