miniSql

创建
zgc123@gmail.com authored at 11/19/2023 1:40:15 AM
6136600
Tree
0 Parent(s)
Summary: 1 changed files with 132 additions and 0 deletions.
Added +132 -0
Added +132 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/App.cs b/minisqlquery-master/src/MiniSqlQuery/App.cs
new file mode 100644
index 0000000..40d54ba
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/App.cs
@@ -0,0 +1,132 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+
+#endregion
+
+using System;
+using System.Threading;
+using System.Windows.Forms;
+using MiniSqlQuery.Core;
+using MiniSqlQuery.Core.DbModel;
+using MiniSqlQuery.Core.Forms;
+using MiniSqlQuery.Core.Template;
+using MiniSqlQuery.PlugIns;
+using MiniSqlQuery.PlugIns.ConnectionStringsManager;
+using MiniSqlQuery.PlugIns.DatabaseInspector;
+using MiniSqlQuery.PlugIns.SearchTools;
+using MiniSqlQuery.PlugIns.TemplateViewer;
+using MiniSqlQuery.PlugIns.TextGenerator;
+using MiniSqlQuery.PlugIns.ViewTable;
+using MiniSqlQuery.Properties;
+
+namespace MiniSqlQuery
+{
+    /// <summary>
+    /// 	The application entry point.
+    /// </summary>
+    internal static class App
+    {
+        /// <summary>
+        /// 	The configure container.
+        /// </summary>
+        /// <param name = "services">The services.</param>
+        public static void ConfigureContainer(IApplicationServices services)
+        {
+            // singletons
+            services.RegisterSingletonComponent<IApplicationSettings, ApplicationSettings>("ApplicationSettings");
+            services.RegisterSingletonComponent<IHostWindow, MainForm>("HostWindow");
+            services.RegisterSingletonComponent<IFileEditorResolver, FileEditorResolverService>("FileEditorResolver");
+
+            // components
+            services.RegisterComponent<AboutForm>("AboutForm");
+            services.RegisterComponent<ITextFindService, BasicTextFindService>("DefaultTextFindService");
+            services.RegisterComponent<IQueryEditor, QueryForm>("QueryForm");
+            services.RegisterComponent<ISqlWriter, SqlWriter>("DefaultSqlWriter");
+            services.RegisterComponent<ITextFormatter, NVelocityWrapper>("TextFormatter");
+            services.RegisterComponent<TemplateModel>("TemplateModel");
+            services.RegisterComponent<BatchQuerySelectForm>("BatchQuerySelectForm");
+        }
+
+        /// <summary>
+        /// 	The application thread exception.
+        /// </summary>
+        /// <param name = "sender">The sender.</param>
+        /// <param name = "e">The e.</param>
+        private static void ApplicationThreadException(object sender, ThreadExceptionEventArgs e)
+        {
+            if (!(e.Exception is ThreadAbortException))
+            {
+                HandleException(e.Exception);
+            }
+        }
+
+        /// <summary>
+        /// 	The current domain unhandled exception.
+        /// </summary>
+        /// <param name = "sender">The sender.</param>
+        /// <param name = "e">The e.</param>
+        private static void CurrentDomainUnhandledException(object sender, UnhandledExceptionEventArgs e)
+        {
+            if (!(e.ExceptionObject is ThreadAbortException))
+            {
+                HandleException((Exception)e.ExceptionObject);
+            }
+        }
+
+        /// <summary>
+        /// 	The handle exception.
+        /// </summary>
+        /// <param name = "e">The e.</param>
+        private static void HandleException(Exception e)
+        {
+            ErrorForm errorForm = new ErrorForm();
+            errorForm.SetException(e);
+            errorForm.ShowDialog();
+            errorForm.Dispose();
+        }
+
+        /// <summary>
+        /// 	The main entry point for the application.
+        /// </summary>
+        /// <param name = "args">The args.</param>
+        [STAThread]
+        private static void Main(string[] args)
+        {
+#if !DEBUG
+			AppDomain.CurrentDomain.UnhandledException += CurrentDomainUnhandledException;
+			Application.ThreadException += ApplicationThreadException;
+#endif
+
+            Application.EnableVisualStyles();
+            Application.SetCompatibleTextRenderingDefault(false);
+
+            IApplicationServices services = ApplicationServices.Instance;
+
+            ConfigureContainer(services);
+
+            services.LoadPlugIn(new CoreApplicationPlugIn());
+            services.LoadPlugIn(new ConnectionStringsManagerLoader());
+            services.LoadPlugIn(new DatabaseInspectorLoader());
+            services.LoadPlugIn(new ViewTableLoader());
+            services.LoadPlugIn(new TemplateViewerLoader());
+            services.LoadPlugIn(new SearchToolsLoader());
+            services.LoadPlugIn(new TextGeneratorLoader());
+
+            if (services.Settings.LoadExternalPlugins)
+            {
+                var plugins = PlugInUtility.GetInstances<IPlugIn>(Environment.CurrentDirectory, Settings.Default.PlugInFileFilter);
+                Array.Sort(plugins, new PlugInComparer());
+                foreach (var plugin in plugins)
+                {
+                    services.LoadPlugIn(plugin);
+                }
+            }
+
+            services.HostWindow.SetArguments(args);
+            Application.Run(services.HostWindow.Instance);
+        }
+    }
+}
\ No newline at end of file