OSDN Git Service

WinGui:
[handbrake-jp/handbrake-jp-git.git] / win / C# / Program.cs
index 9596676..c147542 100644 (file)
@@ -6,9 +6,15 @@
 namespace Handbrake\r
 {\r
     using System;\r
+    using System.Diagnostics;\r
+    using System.Drawing;\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,37 +24,57 @@ 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
-                "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
+            InstanceId = Process.GetProcessesByName("HandBrake").Length;\r
 \r
-            // Verify HandBrakeCLI.exe and ilibgcc_s_sjlj-1.dll exists\r
-            if (!File.Exists(Path.Combine(Application.StartupPath, "HandBrakeCLI.exe")))\r
+            // Handle any unhandled exceptions\r
+            AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomainUnhandledException);\r
+\r
+            // Attempt to upgrade / keep the users settings between versions\r
+            if (Settings.Default.UpdateRequired)\r
             {\r
-                missingFiles += "\"HandBrakeCLI.exe\" was not found.";\r
+                Settings.Default.Upgrade();\r
+                Settings.Default.UpdateRequired = false;\r
+                Functions.Main.SetCliVersionData();\r
             }\r
 \r
-            if (!File.Exists(Path.Combine(Application.StartupPath, "libgcc_s_sjlj-1.dll")))\r
+            // Make sure we have any pre-requesits before trying to launch\r
+            string failedInstall = "HandBrake is not installed properly. Please reinstall HandBrake. \n\n";\r
+            string missingFiles = string.Empty;\r
+\r
+            // Verify HandBrakeCLI.exe exists\r
+            if (!File.Exists(Path.Combine(Application.StartupPath, "HandBrakeCLI.exe")))\r
             {\r
-                missingFiles += "\n\"libgcc_s_sjlj-1.dll\" was not found.";\r
+                missingFiles += "\"HandBrakeCLI.exe\" 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,\r
+                    "Error",\r
+                    MessageBoxButtons.OK,\r
+                    MessageBoxIcon.Error);\r
                 return;\r
             }\r
 \r
             // Check were not running on a screen that's going to cause some funnies to happen.\r
             Screen scr = Screen.PrimaryScreen;\r
             if ((scr.Bounds.Width < 1024) || (scr.Bounds.Height < 620))\r
-                MessageBox.Show("Your system does not meet the minimum requirements for HandBrake. \n" + "Your screen is running at: " + scr.Bounds.Width + "x" + scr.Bounds.Height + " \nScreen resolution is too Low. Must be 1024x620 or greater", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);\r
+            {\r
+                MessageBox.Show(\r
+                    "Your system does not meet the minimum requirements for HandBrake. \n" +\r
+                    "Your screen is running at: " + scr.Bounds.Width + "x" + scr.Bounds.Height +\r
+                    " \nScreen resolution is too Low. Must be 1024x620 or greater.\n\n",\r
+                    "Error",\r
+                    MessageBoxButtons.OK,\r
+                    MessageBoxIcon.Error);\r
+            } \r
             else\r
             {\r
                 string logDir = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), @"HandBrake\logs");\r
@@ -61,10 +87,40 @@ 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 CurrentDomainUnhandledException(object sender, UnhandledExceptionEventArgs e)\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
+        public static int InstanceId;\r
     }\r
 }
\ No newline at end of file