using System; using System.Windows.Forms; using EveOPreview.Configuration; using EveOPreview.UI; namespace EveOPreview { static class Program { private static string ConfigParameterName = "--config:"; /// The main entry point for the application. [STAThread] static void Main(string[] args) { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); // TODO Switch to another container that provides signed assemblies IIocContainer container = new LightInjectContainer(); // UI classes IApplicationController controller = new ApplicationController(container) .RegisterView() .RegisterView() .RegisterView() .RegisterInstance(new ApplicationContext()); // Application services controller.RegisterService() .RegisterService() .RegisterService() .RegisterService() .RegisterInstance(new ThumbnailConfig()); controller.Create().ConfigFileName = Program.GetCustomConfigFile(args); controller.Run(); } // Parse startup parameters // Simple approach is used because something like NParams would be an overkill here private static string GetCustomConfigFile(string[] args) { string configFile = null; foreach (string arg in args) { if ((arg.Length <= Program.ConfigParameterName.Length) || !arg.StartsWith(Program.ConfigParameterName, StringComparison.Ordinal)) { continue; } configFile = arg.Substring(Program.ConfigParameterName.Length); break; } if (string.IsNullOrEmpty(configFile)) { return ""; } // One more check to drop trailing " if ((configFile.Length > 3) && (configFile[0] == '"') && (configFile[configFile.Length - 1] == '"')) { configFile = configFile.Substring(1, configFile.Length - 2); } return configFile; } } }