示例#1
0
        private static void Main(string[] args)
        {
            //if(MonoHelper.IsUnix)
            //	Environment.SetEnvironmentVariable ("MONO_BROWSER_ENGINE", "webkit");

            if (CommandLineHelper.IsCommandSwitchSet("gen_list"))
            {
                try
                {
                    WebUI.ResultsWebServer.UnhandledException += OnUnhandledExceptionEvent;
                    WebUI.ResultsWebServer.Start();

                    ServicesListHtmlGenerator.Generate();
                }
                catch (Exception e)
                {
                    Application.OnThreadException(e);
                }
                return;
            }

            try
            {
                Application.ExceptionsLog += GlobalEventsLogException;
                ResultsCache.UseCache      = true;
                GuessResultsCache.UseCache = true;

                UpdatesManager.Init();
                Application.ShowSplashForm(null);

                Application.OptionsForm = new OptionsForm();
                Application.BaseOptions = new TranslateOptions();
                Application.AboutForm   = new AboutForm();

                OptionsControlsManager.RegisterOptionControl(typeof(StartupOptionsControl), "General", 0, "Startup", 1);
                OptionsControlsManager.RegisterOptionControl(typeof(TrayOptionsControl), "General", 0, "Tray", 2);
                OptionsControlsManager.RegisterOptionControl(typeof(ResultWindowOptionControl), "General", 0, "Result view", 3);
                OptionsControlsManager.RegisterOptionControl(typeof(GuesserOptionsControl), "General", 0, "Language detection", 4);

                if (!MonoHelper.IsUnix)                //monobug - don't work with DataSource
                {
                    OptionsControlsManager.RegisterOptionControl(typeof(KeyboardLayoutControl), "General", 0, "Keyboard layouts", 5);
                }


                OptionsControlsManager.RegisterOptionControl(typeof(UpdatesOptionsControl), "General", 0, "Updates", 6);
                OptionsControlsManager.RegisterOptionControl(typeof(HotkeysOptionsControl), "General", 0, "Hotkeys", 7);

                OptionsControlsManager.RegisterOptionControl(typeof(InputFontOptionsControl), "Fonts", 1, "Input text", 0);
                OptionsControlsManager.RegisterOptionControl(typeof(ResultViewFontOptionsControl), "Fonts", 1, "Result view", 1);
                OptionsControlsManager.RegisterOptionControl(typeof(ToolbarsFontOptionsControl), "Fonts", 1, "Toolbars", 2);

                OptionsControlsManager.RegisterOptionControl(typeof(GeneralNetworkOptionsControl), "Network", 2, "Common", 0);

                OptionsControlsManager.RegisterOptionControl(typeof(CustomProfilesControl), "Profiles", 3, "List", 4);
                OptionsControlsManager.RegisterOptionControl(typeof(AnalyticsOptionsControl), "Usage information collecting", 4, "Usage information collecting", 4);

                Application.Initialize();

                if (TranslateOptions.Instance.SingleInstance && ProcessHelper.IsOtherInstanceAlreadyStarted())
                {
                    ProcessHelper.ActivateOtherInstance(ApplicationInfo.ProductName);
                    return;
                }

                UpdatesManager.CheckNewVersion();

                WebUI.ResultsWebServer.UnhandledException += OnUnhandledExceptionEvent;
                try
                {
                    WebUI.ResultsWebServer.Start();
                }
                catch (System.Reflection.TargetInvocationException e)
                {
                    if (e.InnerException != null && e.InnerException.GetType() == typeof(System.Security.VerificationException))
                    {
                        MessageBox.Show(LangPack.TranslateString("Running from network share not supported.\nTool can work only when started from local drive under appropriate user's rights."),
                                        Constants.AppName, MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return;
                    }
                    else
                    {
                        throw;
                    }
                }

                AnalyticsMonitor.Start();
                Application.Run(new TranslateMainForm());
                WebUI.ResultsWebServer.Stop();
            }
            catch (Exception e)
            {
                Application.OnThreadException(e);
            }
        }