private static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(true); Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException); string lang = PreferredSiteList.InitCulture(); //var btw = BroadcastTextWriter.Instance; // Logging service by default uses System.Diagnostics.Debug. Re-route this // to our writer //var wfmsg = WinFormsMessageService.Instance; //ServiceManager.LoggingService = new TextWriterLoggingService(btw); //ServiceManager.MessageService = wfmsg; ServiceManager.Instance = new MaestroServiceManager(); LoggingService.Info("Application start"); //NOXLATE // Setup Platform.ini if required if (!Platform.IsRunningOnMono) { if (!File.Exists("Platform.ini") && File.Exists("LocalConfigure.exe")) //NOXLATE { var proc = new ProcessStartInfo("LocalConfigure.exe"); if (Environment.OSVersion.Version.Major >= 6) { proc.Verb = "runas"; //NOXLATE } var p = Process.Start(proc); p.WaitForExit(); } } if (Platform.IsRunningOnMono) { LoggingService.Info(Strings.Warn_Mono); } //Init our default set of resource validators ResourceValidatorLoader.LoadStockValidators(); AppDomain.CurrentDomain.AssemblyLoad += new AssemblyLoadEventHandler(CurrentDomain_AssemblyLoad); AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException); // Get a reference to the entry assembly (Startup.exe) Assembly exe = typeof(Program).Assembly; // Set the root path of our application. ICSharpCode.Core looks for some other // paths relative to the application root: // "data/resources" for language resources, "data/options" for default options FileUtility.ApplicationRootPath = Path.GetDirectoryName(exe.Location); LoggingService.Info("Starting core services..."); //NOXLATE // CoreStartup is a helper class making starting the Core easier. // The parameter is used as the application name, e.g. for the default title of // MessageService.ShowMessage() calls. CoreStartup coreStartup = new CoreStartup("MapGuide Maestro"); //NOXLATE // It is also used as default storage location for the application settings: // "%Application Data%\%Application Name%", but you can override that by setting c.ConfigDirectory // #1955: Each version of Maestro from here on in will store their user data under // %APPDATA%\Maestro-x.y coreStartup.ConfigDirectory = MaestroPaths.BasePath; // Specify the name of the application settings file (.xml is automatically appended) coreStartup.PropertiesName = "AppProperties"; //NOXLATE // Initializes the Core services (ResourceService, PropertyService, etc.) coreStartup.StartCoreServices(); LoggingService.Info("Looking for AddIns..."); //NOXLATE // Searches for ".addin" files in the application directory. coreStartup.AddAddInsFromDirectory(Path.Combine(FileUtility.ApplicationRootPath, "AddIns")); //NOXLATE // Searches for a "AddIns.xml" in the user profile that specifies the names of the // add-ins that were deactivated by the user, and adds "external" AddIns. coreStartup.ConfigureExternalAddIns(Path.Combine(PropertyService.ConfigDirectory, "AddIns.xml")); //NOXLATE // Searches for add-ins installed by the user into his profile directory. This also // performs the job of installing, uninstalling or upgrading add-ins if the user // requested it the last time this application was running. coreStartup.ConfigureUserAddIns(Path.Combine(PropertyService.ConfigDirectory, "AddInInstallTemp"), //NOXLATE Path.Combine(PropertyService.ConfigDirectory, "AddIns")); //NOXLATE ResourceService.Language = lang; LoggingService.Info("Loading AddInTree..."); //NOXLATE // Now finally initialize the application. This parses the ".addin" files and // creates the AddIn tree. It also automatically runs the commands in // "/Workspace/Autostart" coreStartup.RunInitialization(); LoggingService.Info("Initializing Workbench..."); //NOXLATE // Workbench is our class from the base project, this method creates an instance // of the main form. ServiceRegistry.Initialize(() => { //DIRTY DIRTY HACK: I'm getting tired of Mono workarounds. But background resource //preview preparation has a chance of clogging up if the main window is initially maximized Workbench.InitializeWorkbench(new WorkbenchInitializer(!Platform.IsRunningOnMono)); try { LoggingService.Info("Running application..."); //NOXLATE // Workbench.Instance is the instance of the main form, run the message loop. Application.Run(Workbench.Instance); } finally { try { // Save changed properties PropertyService.Save(); } catch (Exception ex) { ErrorDialog.Show(Strings.Error_StoreProperties, ex.ToString()); } } LoggingService.Info("Application shutdown"); //NOXLATE }); }
static TestControl() { TestEnvironment.Initialize("TestMaestroAPI.xml"); TestEnvironment.PrintSummary(); ResourceValidatorLoader.LoadStockValidators(); }