Esempio n. 1
0
        static void Main(string[] args)
        {
            if (RaygunKey[0] != '{')
            {
                Raygun = new RaygunClient(RaygunKey);
            }

            AppDomain.CurrentDomain.UnhandledException += (sender, e) => {
                if (StartupLog != null)
                {
                    StartupLog.Error("Fatal Error", (Exception)e.ExceptionObject);
                }

                if (Raygun != null)
                {
                    Raygun.Send((Exception)e.ExceptionObject, null, Settings.CurrentSettings);
                }

                MessageBox.Show("Unexpected error" + Environment.NewLine + (e.ExceptionObject as Exception).ToDisplayString(),
                                "Unexpected error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            };

            //AutomaticErrorReporter errors = new AutomaticErrorReporter();
            //errors.Add (new GablarskiErrorReporter (typeof(Program).Assembly));

            log4net.Config.XmlConfigurator.Configure();
            StartupLog = LogManager.GetLogger("Startup");
            StartupLog.DebugFormat("PID: {0}", Process.GetCurrentProcess().Id);

            FileInfo program = new FileInfo(Process.GetCurrentProcess().MainModule.FileName);

            Environment.CurrentDirectory = program.Directory.FullName;

            string useLocalValue = ConfigurationManager.AppSettings["useLocalDatabase"];
            bool   useLocal;

            Boolean.TryParse(useLocalValue, out useLocal);

            StartupLog.DebugFormat("Local files: {0}", useLocal);
            StartupLog.DebugFormat("Setting up databases..");

            ClientData.Setup(useLocal);

            StartupLog.DebugFormat("Databases setup.");

            CheckForUpdates();

            StartupLog.Debug("Starting key retrieval");
            var keyCancelSource = new CancellationTokenSource();

            Key = ClientData.GetCryptoKeyAsync(keyCancelSource.Token);
            Key.ContinueWith(t => StartupLog.DebugFormat("Key retrieval: {0}{1}{2}", t.Status, Environment.NewLine, t.Exception));

            SetupFirstRun();

            if (Settings.Nickname == null)
            {
                PersonalSetup();
            }

            if (!ShowKeyProgress(keyCancelSource))
            {
                return;
            }

            ResourceWebRequestFactory.Register();

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            //SetupSocial();

            /*MainWindow window = new MainWindow();
             * window.Show();*/

            var m = new MainForm();

            m.Show();

            UpdateTaskbarServers();

            if (args.Length > 0)
            {
                int id;
                if (Int32.TryParse(args[0], out id))
                {
                    ServerEntry server = Servers.GetEntries().FirstOrDefault(s => s.Id == id);
                    if (server == null)
                    {
                        if (!m.ShowConnect(true))
                        {
                            return;
                        }
                    }
                    else
                    {
                        m.Connect(server);
                    }
                }
                else
                {
                    Uri server = new Uri(args[0]);
                    m.Connect(server.Host, (server.Port != -1) ? server.Port : 42912);
                }
            }
            else if (Settings.ShowConnectOnStart)
            {
                if (!m.ShowConnect(true))
                {
                    return;
                }
            }

            /*System.Windows.Application app = new System.Windows.Application();
             * app.Run (window);*/

            Application.Run(m);

            Settings.Save();
        }