Example #1
0
        public static void Main(string[] args)
        {
            try
            {
                WindowStartupFix.WindowsCheck();
                Application.Init();
                QSMain.GuiThread = System.Threading.Thread.CurrentThread;
#if DEBUG
                var errorSettings = new ErrorReportingSettings(false, true, false, null);
#else
                var errorSettings = new ErrorReportingSettings(true, false, true, 300);
#endif
                UnhandledExceptionHandler.SubscribeToUnhadledExceptions(errorSettings);
                GtkGuiDispatcher.GuiThread = System.Threading.Thread.CurrentThread;
                UnhandledExceptionHandler.ApplicationInfo = new ApplicationVersionInfo();
                //Настройка обычных обработчиков ошибок.
                UnhandledExceptionHandler.CustomErrorHandlers.Add(CommonErrorHandlers.MySqlException1055OnlyFullGroupBy);
                UnhandledExceptionHandler.CustomErrorHandlers.Add(CommonErrorHandlers.MySqlException1366IncorrectStringValue);
                UnhandledExceptionHandler.CustomErrorHandlers.Add(CommonErrorHandlers.NHibernateFlushAfterException);
            }
            catch (Exception falalEx)
            {
                if (WindowStartupFix.IsWindows)
                {
                    WindowStartupFix.DisplayWindowsOkMessage(falalEx.ToString(), "Критическая ошибка");
                }
                else
                {
                    Console.WriteLine(falalEx);
                }

                logger.Fatal(falalEx);
                return;
            }

            CreateProjectParam();
            try
            {
                AutofacClassConfig();
            }
            catch (MissingMethodException ex) when(ex.Message.Contains("System.String System.String.Format"))
            {
                WindowStartupFix.DisplayWindowsOkMessage("Версия .Net Framework должна быть не ниже 4.6.1. Установите боллее новую платформу.", "Старая версия .Net");
            }

            // Создаем окно входа
            Login LoginDialog = new QSProjectsLib.Login();
            LoginDialog.Logo = Gdk.Pixbuf.LoadFromResource("CarGlass.icons.logo.png");
            LoginDialog.SetDefaultNames("CarGlass");
            LoginDialog.DefaultLogin  = "";
            LoginDialog.DefaultServer = "stekloff.qsolution.ru";
            LoginDialog.UpdateFromGConf();

            ResponseType LoginResult;
            LoginResult = (ResponseType)LoginDialog.Run();
            if (LoginResult == ResponseType.DeleteEvent || LoginResult == ResponseType.Cancel)
            {
                return;
            }

            LoginDialog.Destroy();

            //Настройка базы
            CreateBaseConfig();

            // Для корректного удаления в справочниках
            QSOrmProject.OrmMain.DisableLegacyDeletion();

            //Запускаем программу
            MainWin = new MainWindow();
            QSMain.ErrorDlgParrent = MainWin;
            if (QSMain.User.Login == "root")
            {
                return;
            }
            MainWin.Show();
            Application.Run();
        }
Example #2
0
        public static void Main(string[] args)
        {
            UnhandledExceptionHandler unhandledExceptionHandler = new UnhandledExceptionHandler();

            try
            {
                WindowStartupFix.WindowsCheck();
                Application.Init();
                QSMain.GuiThread           = System.Threading.Thread.CurrentThread;
                GtkGuiDispatcher.GuiThread = System.Threading.Thread.CurrentThread;

                var builder = new ContainerBuilder();
                AutofacStartupConfig(builder);
                startupContainer = builder.Build();
                unhandledExceptionHandler.UpdateDependencies(startupContainer);
                unhandledExceptionHandler.SubscribeToUnhandledExceptions();
            } catch (MissingMethodException ex) when(ex.Message.Contains("System.String System.String.Format"))
            {
                WindowStartupFix.DisplayWindowsOkMessage("Версия .Net Framework должна быть не ниже 4.6.1. Установите более новую платформу.", "Старая версия .Net");
                return;
            }
            catch (Exception fallEx) {
                if (WindowStartupFix.IsWindows)
                {
                    WindowStartupFix.DisplayWindowsOkMessage(fallEx.ToString(), "Критическая ошибка");
                }
                else
                {
                    Console.WriteLine(fallEx);
                }

                logger.Fatal(fallEx);
                return;
            }

            ILifetimeScope scopeLoginTime = startupContainer.BeginLifetimeScope();
            // Создаем окно входа
            Login LoginDialog = new Login();

            LoginDialog.Logo = Gdk.Pixbuf.LoadFromResource("workwear.icon.logo.png");
            LoginDialog.SetDefaultNames("workwear");
            LoginDialog.DefaultLogin      = "******";
            LoginDialog.DefaultServer     = "demo.qsolution.ru";
            LoginDialog.DefaultConnection = "Демонстрационная база";
            Login.ApplicationDemoServer   = "demo.qsolution.ru";
            LoginDialog.DemoMessage       = "Для подключения к демонстрационному серверу используйте следующие настройки:\n" +
                                            "\n" +
                                            "<b>Сервер:</b> demo.qsolution.ru\n" +
                                            "<b>Пользователь:</b> demo\n" +
                                            "<b>Пароль:</b> demo\n" +
                                            "\n" +
                                            "Для установки собственного сервера обратитесь к документации.";
            Login.CreateDBHelpTooltip = "Инструкция по установке сервера MySQL";
            Login.CreateDBHelpUrl     = "http://doc.qsolution.ru/workwear/" + new ApplicationVersionInfo().Version.ToString(2) + "/install.html#InstallDBServer";
            LoginDialog.GetDBCreator  = scopeLoginTime.Resolve <IDBCreator>;

            LoginDialog.UpdateFromGConf();

            ResponseType LoginResult;

            LoginResult = (ResponseType)LoginDialog.Run();
            if (LoginResult == ResponseType.DeleteEvent || LoginResult == ResponseType.Cancel)
            {
                return;
            }

            LoginDialog.Destroy();
            scopeLoginTime.Dispose();

            QSSaaS.Session.StartSessionRefresh();

            //Прописываем системную валюту
            CurrencyWorks.CurrencyShortFomat = "{0:C}";
            CurrencyWorks.CurrencyShortName  = System.Globalization.CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol;

            CreateBaseConfig();                                                       //Настройка базы
            AppDIContainer = startupContainer.BeginLifetimeScope(AutofacClassConfig); //Создаем постоянный контейнер
            unhandledExceptionHandler.UpdateDependencies(AppDIContainer);

            //Настройка удаления
            Configure.ConfigureDeletion();
#if !DEBUG
            //Инициализируем телеметрию
            var applicationInfo = new ApplicationVersionInfo();
            MainTelemetry.Product = applicationInfo.ProductName;
            MainTelemetry.Edition = applicationInfo.Modification;
            MainTelemetry.Version = applicationInfo.Version.ToString();
            MainTelemetry.IsDemo  = Login.ApplicationDemoServer == QSMain.connectionDB.DataSource;
            var appConfig = QSMachineConfig.MachineConfig.ConfigSource.Configs["Application"];
            if (appConfig != null)
            {
                MainTelemetry.DoNotTrack = appConfig.GetBoolean("DoNotTrack", false);
            }

            MainTelemetry.StartUpdateByTimer(600);
#else
            MainTelemetry.DoNotTrack = true;
#endif
            //Запускаем программу
            MainWin        = new MainWindow();
            MainWin.Title += string.Format(" (БД: {0})", LoginDialog.SelectedConnection);
            if (QSMain.User.Login == "root")
            {
                return;
            }
            MainWin.Show();
            Application.Run();

            if (!MainTelemetry.SendingError)
            {
                MainTelemetry.SendTimeout = TimeSpan.FromSeconds(2);
                MainTelemetry.SendTelemetry();
            }
            QSSaaS.Session.StopSessionRefresh();
            AppDIContainer.Dispose();
            startupContainer.Dispose();
        }