public void SetBrushes(string cfgElementName, Brush defaultForeBrush, Brush defaultBackBrush) { if (string.IsNullOrEmpty(cfgElementName)) { Foreground = defaultForeBrush; Background = defaultBackBrush; } // иначе берем из config-файла, значение: [строка цвета шрифта];[строка цвета фона] else { string cfgValue = CfgFileHelper.GetAppSetting(cfgElementName); if (string.IsNullOrEmpty(cfgValue)) { Foreground = defaultForeBrush; Background = defaultBackBrush; } else { string[] cfgVals = cfgValue.Split('|'); Foreground = DrawHelper.GetBrushByName(cfgVals[0]); if (cfgVals.Length > 1) { Background = DrawHelper.GetBrushByName(cfgVals[1]); } else { Background = defaultBackBrush; } } } }
// если в config-е режим не задан или задан неверно, то по умолчанию - Cook private static void initFromCfgFile() { KDSModeEnum mode; string cfgValue = CfgFileHelper.GetAppSetting("KDSMode"); if (cfgValue.IsNull()) { mode = KDSModeEnum.Cook; // нет такого элемента } else if (Enum.TryParse <KDSModeEnum>(cfgValue, out mode) == false) { mode = KDSModeEnum.Cook; // не смогли распарсить } // сохранить в свойствах класса KDSModeHelper.CurrentKDSMode = mode; // особая роль, читаем доп.элементы в config и заполняем четвертый элемент в _definedKDSModes if (mode == KDSModeEnum.Special) { KDSModeStates modeStates = _definedKDSModes[KDSModeEnum.Special]; string cfgVal = CfgFileHelper.GetAppSetting("KDSModeSpecialStates"); modeStates.StringToAllowedStates(cfgVal); cfgVal = CfgFileHelper.GetAppSetting("KDSModeSpecialActions"); modeStates.StringToAllowedActions(cfgVal); modeStates.CreateUserStateSets(); } } // method
private static void setGlobalValueFromCfg <T>(string cfgElementName, T defaultValue, string globVarName = null) { string sCfgValue = CfgFileHelper.GetAppSetting(cfgElementName); AppProperties.SetProperty(((globVarName == null) ? cfgElementName : globVarName), (string.IsNullOrEmpty(sCfgValue) ? defaultValue : getValueFromString(ref sCfgValue, typeof(T)))); }
// сохранить настройки приложения из config-файла в свойствах приложения public static bool saveAppSettingToProps(string settingName, Type settingType = null, string defaultConfValue = null) { string settingValue = CfgFileHelper.GetAppSetting(settingName); if (settingValue == null) { if (defaultConfValue == null) { return(false); } else { settingValue = defaultConfValue; } } if (settingType == null) { AppLib.SetAppGlobalValue(settingName, settingValue); // по умолчанию сохраняется как строка } else { object objValue = getObjValueFromString(settingValue, settingType); if (objValue != null) { AppLib.SetAppGlobalValue(settingName, objValue); } } return(true); }
private static void setGlobDoubleValueFromCfg(string cfgElementName, double defaultValue = 0d, string globVarName = null) { string sCfgValue = CfgFileHelper.GetAppSetting(cfgElementName); string key = ((globVarName == null) ? cfgElementName : globVarName); double value = (string.IsNullOrEmpty(sCfgValue) ? defaultValue : sCfgValue.ToDouble()); WpfHelper.SetAppGlobalValue(key, value); }
private static void setGlobBoolValueFromCfg(string cfgElementName, bool defaultValue = false, string globVarName = null) { string sCfgValue = CfgFileHelper.GetAppSetting(cfgElementName); string key = ((globVarName == null) ? cfgElementName : globVarName); bool value = (string.IsNullOrEmpty(sCfgValue) ? defaultValue : sCfgValue.ToBool()); WpfHelper.SetAppGlobalValue(key, value); }
private void setBackgroundImage(string bgImageFile) { // фон backgroundImage.Source = ImageHelper.GetBitmapImage(bgImageFile); // яркость фона string opacity = CfgFileHelper.GetAppSetting("MenuBackgroundBrightness"); if (opacity != null) { backgroundImage.Opacity = opacity.ToDouble(); } }
private void setAppLayout() { string bgImageFile = CfgFileHelper.GetAppSetting("ImagesPath"); if (WpfHelper.IsAppVerticalLayout) { bgImageFile = AppEnvironment.GetFullFileName(bgImageFile, "bg 3ver 1080x1920 background.png"); // пересоздать кол-во строк и столбцов transposeGrid(G15); transposeGrid(G24); } else { bgImageFile = AppEnvironment.GetFullFileName(bgImageFile, "bg 3hor 1920x1080 background.png"); } setBackgroundImage(bgImageFile); // фон }
private static void createWinTitleBrushes() { string cfgValue; cfgValue = CfgFileHelper.GetAppSetting("WinTitleBackground"); if (cfgValue == null) { cfgValue = "122;34;104"; // по умолчанию - т.фиолетовый } WpfHelper.SetAppGlobalValue("WinTitleBackground", DrawHelper.GetBrushByName(cfgValue, "122;34;104")); cfgValue = CfgFileHelper.GetAppSetting("WinTitleForeground"); if (cfgValue == null) { cfgValue = "255;200;62"; // по умолчанию - т.желтый } WpfHelper.SetAppGlobalValue("WinTitleForeground", DrawHelper.GetBrushByName(cfgValue, "255;200;62")); }
private void setLayoutAfterLoaded() { // main title double fontSize = ((WpfHelper.IsAppVerticalLayout) ? 0.4 : 0.5) * brdTitle.ActualHeight; tbMainTitle.FontSize = fontSize; // logo image string logoFile = CfgFileHelper.GetAppSetting("LogoImage"); if (logoFile != null) { logoFile = AppEnvironment.GetFullFileName((string)WpfHelper.GetAppGlobalValue("ImagesPath", ""), logoFile); double d1 = 0.15 * brdTitle.ActualHeight; imgLogo.Source = ImageHelper.GetBitmapImage(logoFile); imgLogo.Margin = new Thickness(0, d1, 0, d1); } }
public CfgValue(string key, bool fromAppProps, Control control) { _key = key; _control = control; _fromAppProps = fromAppProps; // из AppLib.GetAppSetting(_key) возвращается СТРОКА _preValue = (fromAppProps) ? WpfHelper.GetAppGlobalValue(_key) : CfgFileHelper.GetAppSetting(_key); if (_preValue == null) { return; } _typeName = _preValue.GetType().Name; if (control != null) { putValueToControl(); } }
public MainWindow() { InitializeComponent(); _appOrders = new List <AppOrder>(); _unUsedDeps = (HashSet <int>)WpfHelper.GetAppGlobalValue("UnusedDepartments"); // кисти заголовка окна Brush titleBackColor = (SolidColorBrush)WpfHelper.GetAppGlobalValue("WinTitleBackground"); Brush titleForeColor = (SolidColorBrush)WpfHelper.GetAppGlobalValue("WinTitleForeground"); brdTitle.Background = titleBackColor; tbMainTitle.Foreground = titleForeColor; // статусная строка statusBorder.Background = titleBackColor; statusBorder.SetValue(TextBlock.ForegroundProperty, titleForeColor); // кисти для панелей заказов _cellBrushes = (Brush[])WpfHelper.GetAppGlobalValue("PanelBackgroundBrushes"); string statusReadyAudioFile = AppEnvironment.GetFullFileName(CfgFileHelper.GetAppSetting("AudioPath"), CfgFileHelper.GetAppSetting("StatusReadyAudioFile")); if (System.IO.File.Exists(statusReadyAudioFile)) { simpleSound = new System.Media.SoundPlayer(statusReadyAudioFile); } _isShowClientName = (bool)WpfHelper.GetAppGlobalValue("IsShowClientName"); _isShowCookingTime = (bool)WpfHelper.GetAppGlobalValue("IsShowOrderEstimateTime"); _cookingEstMinutes = (double)WpfHelper.GetAppGlobalValue("OrderEstimateTime", 0d); this.Loaded += MainWindow_Loaded; setAppLayout(); _updateTimer = new System.Timers.Timer(1000d); _updateTimer.AutoReset = true; _updateTimer.Elapsed += updateTimer_Tick; _updateTimer.Start(); _currentDate = DateTime.Now.Date; _hoursBeforeMidnight = Convert.ToDouble(WpfHelper.GetAppGlobalValue("MidnightShiftShowYesterdayOrders", 0d)); _readOrdersSQLText = getReadOrdersSQLText(); }
private string getSplashBackImageFile() { string hor = CfgFileHelper.GetAppSetting("BackgroundImageHorizontal"); string ver = CfgFileHelper.GetAppSetting("BackgroundImageVertical"); string fileName = (WpfHelper.IsAppVerticalLayout ? ver : hor); if (fileName == null) { return(null); } string cfgValue = CfgFileHelper.GetAppSetting("ImagesPath"); fileName = AppEnvironment.GetFullFileName(cfgValue, fileName); if (System.IO.File.Exists(fileName) == false) { return(null); } return(fileName); }
private string getSplashBackImageFile() { string hor = CfgFileHelper.GetAppSetting("SplashBackImageHorizontal"); string ver = CfgFileHelper.GetAppSetting("SplashBackImageVertical"); string fileName = (WpfHelper.IsAppVerticalLayout ? ver : hor); if (fileName == null) { return(null); } if (System.IO.File.Exists(fileName) == false) { return(null); } if (fileName.Contains(@"/")) { fileName = fileName.Replace(@"/", "\\"); } return(AppEnvironment.GetFullFileName("", fileName)); }
private static string checkMarginKoefString() { // строки по умолчанию string cfgValue = CfgFileHelper.GetAppSetting("MarginHor"); if (cfgValue.IsNull()) { cfgValue = "0.05"; } string s1 = CfgFileHelper.GetAppSetting("MarginVer"); cfgValue += ";" + (s1.IsNull() ? "0.05" : s1); // проверить цифровые значения string[] a1 = cfgValue.Split(';'); double d1 = a1[0].ToDouble(), d2 = ((a1.Length > 1) ? a1[1].ToDouble() : d1); if (d1 < 0d) { d1 = 0.01d; } else if (d1 > 0.4d) { d1 = 0.4d; } if (d2 < 0d) { d2 = 0.01d; } else if (d2 > 0.4d) { d2 = 0.4d; } IFormatProvider dotFormatter = FormatProviderHelper.DotFormatter(); string retVal = d1.ToString(dotFormatter) + ";" + d2.ToString(dotFormatter); return(retVal); }
private static void createPanelBackBrushes() { Brush[] cellBrushes = new Brush[2]; string cfgValue; cfgValue = CfgFileHelper.GetAppSetting("StatusCookingPanelBackground"); if (cfgValue == null) { cfgValue = "Gold"; } cellBrushes[0] = DrawHelper.GetBrushByName(cfgValue, "Gold"); cfgValue = CfgFileHelper.GetAppSetting("StatusReadyPanelBackground"); if (cfgValue == null) { cfgValue = "LimeGreen"; } cellBrushes[1] = DrawHelper.GetBrushByName(cfgValue, "LimeGreen"); // сохранить в свойствах WpfHelper.SetAppGlobalValue("PanelBackgroundBrushes", cellBrushes); }
// получить настройки приложения из config-файла public static string GetAppSetting(string key) { string retVal = CfgFileHelper.GetAppSetting(key); return((retVal == null) ? "-" : retVal); }
public static void Main() { App app = new App(); if (Microsoft.Shell.SingleInstance <App> .InitializeAsFirstInstance(Unique)) { string cfgValue; // установить текущий каталог на папку с приложением string setAppDirResult = setAppDirectory(); // splash-screen Splasher.Splash = new Views.SplashScreen(); Splasher.ShowSplash(); MessageListener.Instance.ReceiveMessage("Инициализация журнала событий..."); cfgValue = AppLib.InitAppLoggers(); if (cfgValue != null) { appExit(1, "Ошибка инициализации журнала приложения: " + cfgValue); } AppLib.WriteLogInfoMessage("************ Start NoodleD_Client (WPF) *************"); // объем доступной памяти MessageListener.Instance.ReceiveMessage("Check free RAM value..."); int freeMemory = AppLib.getAvailableRAM(); AppLib.WriteLogInfoMessage("Available RAM: " + freeMemory.ToString() + " MB"); if (freeMemory < 300) { AppLib.WriteLogErrorMessage("Terminate program by low memory."); AppLib.WriteLogInfoMessage("************ End application ************"); appExit(2, "This computer has too low available memory.\r\nYou need at least 300 MB free memory."); } if (setAppDirResult.IsNull() == false) { AppLib.WriteLogInfoMessage(setAppDirResult); } // таймаут запуска приложения cfgValue = CfgFileHelper.GetAppSetting("StartTimeout"); int startTimeout = 0; if (cfgValue != null) { startTimeout = cfgValue.ToInt(); } if (startTimeout != 0) { for (int i = startTimeout; i > 0; i--) { MessageListener.Instance.ReceiveMessage($"Таймаут запуска приложения - {i} секунд."); System.Threading.Thread.Sleep(1000); } } #region информация о сборках MessageListener.Instance.ReceiveMessage("Получаю информацию о сборках и настройках..."); ITSAssemblyInfo asmInfo = new ITSAssemblyInfo(AppEnvironment.GetAppAssemblyName()); AppLib.WriteLogInfoMessage($" - файл: {asmInfo.FullFileName}, version {asmInfo.Version}, last write date '{asmInfo.DateLastOpened.ToString()}'"); asmInfo = new ITSAssemblyInfo("IntegraLib"); AppLib.WriteLogInfoMessage($" - файл: {asmInfo.FullFileName}, version {asmInfo.Version}, last write date '{asmInfo.DateLastOpened.ToString()}'"); asmInfo = new ITSAssemblyInfo("IntegraWPFLib"); AppLib.WriteLogInfoMessage($" - файл: {asmInfo.FullFileName}, version {asmInfo.Version}, last write date '{asmInfo.DateLastOpened.ToString()}'"); AppLib.WriteLogInfoMessage("Системное окружение: " + AppEnvironment.GetEnvironmentString()); // номер устройства - не число! if (AppLib.GetAppSetting("ssdID").IsNumber() == false) { AppLib.WriteLogErrorMessage("** Номер устройства - НЕ ЧИСЛО !! **"); AppLib.WriteLogInfoMessage("************ End application ************"); appExit(4, "Номер устройства - НЕ ЧИСЛО!!"); } // основная информация о софт-окружении AppLib.WriteLogTraceMessage(string.Format("Настройки: Id устройства-{0}, папка изображений-{1}, таймер бездействия-{2} sec, диапазон номеров чеков от {3} до {4}, принтер пречека-{5}", AppLib.GetAppSetting("ssdID"), AppLib.GetAppSetting("ImagesPath"), AppLib.GetAppSetting("UserIdleTime"), AppLib.GetAppSetting("RandomOrderNumFrom"), AppLib.GetAppSetting("RandomOrderNumTo"), AppLib.GetAppSetting("PrinterName"))); //****** НАСТРОЙКИ ****** // определенные в app.xaml app.InitializeComponent(); // определенные в config-файле getSettingsFromConfigFile(); // вычислить размеры, хранимые в свойствах приложения calculateAppSizes(); // прочие глобальные настройки AppLib.SetAppGlobalValue("promoCode", null); //TestData.mainProc(); #endregion // проверка соединения с бд MessageListener.Instance.ReceiveMessage("Проверяю доступность к базе данных..."); AppLib.WriteLogTraceMessage("Проверка доступа к базе данных..."); AppLib.WriteLogTraceMessage(" - строка подключения: " + getDbConnectionString()); string errorMessage; while (AppLib.CheckDBConnection(typeof(NoodleDContext), out errorMessage) == false) { AppLib.WriteLogTraceMessage(" - result: " + errorMessage); // задержка на 10 сек for (int i = 10; i > 0; i--) { MessageListener.Instance.ReceiveMessage($"Проверка доступа к БД завершилась ошибкой!! (след.проверка через {i} сек)"); Thread.Sleep(1000); } MessageListener.Instance.ReceiveMessage("Проверяю доступность к базе данных..."); Thread.Sleep(500); } AppLib.WriteLogTraceMessage(" - result: Ok"); // настройки, определенные в ms sql readSettingFromDB(); // данные, хранящиеся в БД readAppDataFromDB(); // ожидашка int idleSec = (int)AppLib.GetAppGlobalValue("UserIdleTime", 0); if (idleSec > 0) { IdleHandler = new UserActionIdle(); IdleHandler.IdleSeconds = idleSec; IdleHandler.IdleElapseEvent += IdleHandler_IdleElapseEvent; IdleHandler.SetPause(); } // главное окно приложения MessageListener.Instance.ReceiveMessage("Запуск основного окна..."); Thread.Sleep(500); MainWindow mainWindow = new MainWindow(); try { app.Run(mainWindow); } catch (Exception ex) { AppLib.WriteLogErrorMessage(ex.ToString()); MessageBox.Show(ex.Message, "Error Application", MessageBoxButton.OK, MessageBoxImage.Error, MessageBoxResult.OK); } AppLib.WriteLogInfoMessage("************ End application ************"); // подчистить память if (IdleHandler != null) { IdleHandler.Dispose(); } // Allow single instance code to perform cleanup operations Microsoft.Shell.SingleInstance <App> .Cleanup(); } }
public static void Main(string[] args) { // splash Splasher.Splash = new SplashScreen(); Splasher.ShowSplash(); //for (int i = 0; i < 5000; i += 1) //{ // MessageListener.Instance.ReceiveMessage(string.Format("Load module {0}", i)); // Thread.Sleep(1); //} // таймаут запуска приложения string cfgValue = CfgFileHelper.GetAppSetting("StartTimeout"); int startTimeout = 0; if (cfgValue != null) { startTimeout = cfgValue.ToInt(); } if (startTimeout != 0) { for (int i = startTimeout; i > 0; i--) { MessageListener.Instance.ReceiveMessage($"Таймаут запуска приложения - {i} секунд."); System.Threading.Thread.Sleep(1000); } } // текст в MessageListener.Instance прибинден к текстовому полю на сплэше MessageListener.Instance.ReceiveMessage("Инициализация журнала событий..."); AppLib.InitAppLogger(); AppLib.WriteLogInfoMessage("************ Start KDS Client (WPF) *************"); // установить текущий каталог на папку с приложением string curDir = System.IO.Directory.GetCurrentDirectory(); if (curDir.Last() != '\\') { curDir += "\\"; } string appDir = AppEnvironment.GetAppDirectory(); if (curDir != appDir) { AppLib.WriteLogInfoMessage("Текущий каталог изменен на папку приложения: " + appDir); System.IO.Directory.SetCurrentDirectory(appDir); } // защита PSW-файлом MessageListener.Instance.ReceiveMessage("Проверка лицензии..."); bool isLoyalClient = false; //isLoyalClient = ((args != null) && args.Contains("-autoGenLicence")); // ключ реестра HKLM\Software\Integra\autoGenLicence = 01 (binary) if (isLoyalClient == false) { isLoyalClient = RegistryHelper.IsExistsAutoGenLicenceKey(); } pswLib.CheckProtectedResult checkProtectedResult; if (pswLib.Hardware.IsCurrentAppProtected("KDSWPFClient", out checkProtectedResult, null, isLoyalClient) == false) { string errMsg = string.Format("{0}{1}{1}{2}", checkProtectedResult.LogMessage, Environment.NewLine, checkProtectedResult.CustomMessage); appExit(2, errMsg); } MessageListener.Instance.ReceiveMessage("Получение версии приложения..."); AppLib.WriteLogInfoMessage("Инициализация KDS-клиента..."); // проверка наличия уникального имени клиента в конфиг-файле cfgValue = CfgFileHelper.GetAppSetting("KDSClientName"); if (cfgValue.IsNull() == true) { cfgValue = "Не указано имя КДС-клиента в файле AppSettings.config."; appExit(3, cfgValue); } if (cfgValue.Equals("uniqClientName", StringComparison.OrdinalIgnoreCase)) { #if (Release == false) && (DEBUG == false) cfgValue = "Измените имя КДС-клиента в файле AppSettings.config"; appExit(3, cfgValue); #endif } KDSWPFClient.App app = new KDSWPFClient.App(); WpfHelper.SetAppGlobalValue("KDSClientName", cfgValue); App.ClientName = System.Convert.ToString(WpfHelper.GetAppGlobalValue("KDSClientName")); AppLib.WriteLogInfoMessage(" - имя КДС-клиента: {0}", App.ClientName); // информация о файлах и сборках AppLib.WriteLogInfoMessage(" - файл: {0}, Version {1}", AppEnvironment.GetAppFullFile(), AppEnvironment.GetAppVersion()); ITSAssemblyInfo asmInfo = new ITSAssemblyInfo("IntegraLib"); AppLib.WriteLogInfoMessage(" - Integra lib: '{0}', Version {1}", asmInfo.FullFileName, asmInfo.Version); asmInfo = new ITSAssemblyInfo("IntegraWPFLib"); AppLib.WriteLogInfoMessage(" - Integra WPF lib: '{0}', Version {1}", asmInfo.FullFileName, asmInfo.Version); MessageListener.Instance.ReceiveMessage("Получение параметров окружения..."); AppLib.WriteLogInfoMessage(AppEnvironment.GetEnvironmentString()); getAppLayout(); // настройка приложения MessageListener.Instance.ReceiveMessage("Получение параметров приложения..."); #if !DEBUG System.Threading.Thread.Sleep(500); #endif app.InitializeComponent(); // определенные в app.xaml setAppGlobalValues(); // для хранения в свойствах приложения (из config-файла или др.) AppLib.WriteLogInfoMessage("App settings from config file: " + CfgFileHelper.GetAppSettingsFromConfigFile()); // создать каналы AppLib.WriteLogInfoMessage("Создаю клиента для работы со службой KDSService - START"); AppDataProvider dataProvider = new AppDataProvider(); try { MessageListener.Instance.ReceiveMessage("Создание канала получения данных..."); #if !DEBUG System.Threading.Thread.Sleep(1000); #endif dataProvider.CreateGetChannel(); MessageListener.Instance.ReceiveMessage("Создание канала установки данных..."); #if !DEBUG System.Threading.Thread.Sleep(1000); #endif dataProvider.CreateSetChannel(); AppLib.WriteLogInfoMessage("Создаю клиента для работы со службой KDSService - FINISH"); } catch (Exception) { AppLib.WriteLogErrorMessage("Data provider error: " + dataProvider.ErrorMessage); } // и получить словари и настройки от службы MessageListener.Instance.ReceiveMessage("Получаю словари и настройки от службы KDSService..."); #if !DEBUG System.Threading.Thread.Sleep(500); #endif AppLib.WriteLogInfoMessage("Получаю словари и настройки от службы KDSService - START"); if (dataProvider.SetDictDataFromService() == false) { // КДСы могут быть уже запущены, а служба еще нет! AppLib.WriteLogErrorMessage("Data provider error: " + dataProvider.ErrorMessage); //if (splashScreen != null) splashScreen.Close(TimeSpan.FromMinutes(10)); //MessageBox.Show("Ошибка получения словарей от службы KDSService:" + Environment.NewLine + dataProvider.ErrorMessage, "АВАРИЙНОЕ ЗАВЕРШЕНИЕ ПРИЛОЖЕНИЯ", MessageBoxButton.OK, MessageBoxImage.Error, MessageBoxResult.OK); //Environment.Exit(2); } else { AppLib.WriteLogInfoMessage("Получаю словари и настройки от службы KDSService - FINISH"); } WpfHelper.SetAppGlobalValue("AppDataProvider", dataProvider); // прочитать из config-а и сохранить в свойствах приложения режим КДС MessageListener.Instance.ReceiveMessage("Получаю из config-файла режим работы КДС..."); #if !DEBUG System.Threading.Thread.Sleep(500); #endif KDSModeHelper.Init(); // создать и сохранить в свойствах приложения служебные окна (ColorLegend, StateChange) MessageListener.Instance.ReceiveMessage("Создаю служебные окна..."); #if !DEBUG System.Threading.Thread.Sleep(500); #endif WpfHelper.SetAppGlobalValue("ColorLegendWindow", new ColorLegend()); // окно легенды // окно изменения статуса WpfHelper.SetAppGlobalValue("StateChangeWindow", new StateChange()); // основное окно приложения MessageListener.Instance.ReceiveMessage("Инициализация окна приложения..."); #if !DEBUG System.Threading.Thread.Sleep(1000); #endif MainWindow mainWindow = new MainWindow(args); app.MainWindow = mainWindow; app.Run(mainWindow); if (dataProvider != null) { dataProvider.Dispose(); dataProvider = null; } AppLib.WriteLogInfoMessage("************ End KDS Client (WPF) *************"); } // Main()
// сохранить в свойствах приложения часто используемые значения, чтобы не дергать config-файл private static void setAppGlobalValues() { string cfgValue; double dCfg; cfgValue = CfgFileHelper.GetAppSetting("MidnightShiftShowYesterdayOrders"); dCfg = (cfgValue == null ? 0 : cfgValue.ToDouble()); if (dCfg < 0) { dCfg = 0d; } WpfHelper.SetAppGlobalValue("MidnightShiftShowYesterdayOrders", dCfg); // файл изображения состояния string sPath = CfgFileHelper.GetAppSetting("ImagesPath"); if (string.IsNullOrEmpty(sPath)) { sPath = "Images"; } WpfHelper.SetAppGlobalValue("ImagesPath", sPath); string sFile = CfgFileHelper.GetAppSetting("StatusReadyImage"); string fileName = AppEnvironment.GetFullFileName(sPath, sFile); if ((fileName != null) && (System.IO.File.Exists(fileName))) { WpfHelper.SetAppGlobalValue("StatusReadyImageFile", fileName); } // неиспользуемые цеха HashSet <int> unUsed = new HashSet <int>(); cfgValue = CfgFileHelper.GetAppSetting("UnusedDepartments"); if (cfgValue != null) { if (cfgValue.Contains(",")) { cfgValue = cfgValue.Replace(',', ';'); } int id; foreach (string item in cfgValue.Split(';')) { id = item.ToInt(); if (!unUsed.Contains(id)) { unUsed.Add(id); } } } WpfHelper.SetAppGlobalValue("UnusedDepartments", unUsed); // кисти фона и текста заголовка окна createWinTitleBrushes(); // кисти фона панели заказа (CellBrushes - кисть фона и разделительной полосы) createPanelBackBrushes(); // поля панели заказа в ячейке - два double-значения, разделенные ";" cfgValue = checkMarginKoefString(); WpfHelper.SetAppGlobalValue("MarginKoefStr", cfgValue); // показывать ли ожидаемое время приготовления заказа cfgValue = CfgFileHelper.GetAppSetting("IsShowOrderEstimateTime"); WpfHelper.SetAppGlobalValue("IsShowOrderEstimateTime", cfgValue.ToBool()); // ожидаемое время приготовления заказа cfgValue = CfgFileHelper.GetAppSetting("OrderEstimateTime"); WpfHelper.SetAppGlobalValue("OrderEstimateTime", cfgValue.ToDouble()); // имя клиента - отображается на панели, если есть cfgValue = CfgFileHelper.GetAppSetting("IsShowClientName"); WpfHelper.SetAppGlobalValue("IsShowClientName", cfgValue.ToBool()); cfgValue = CfgFileHelper.GetAppSetting("IsWriteTraceMessages"); WpfHelper.SetAppGlobalValue("IsWriteTraceMessages", (cfgValue == null) ? false : cfgValue.ToBool()); // массивы строк для различных языков cfgValue = CfgFileHelper.GetAppSetting("StatusTitle"); if (cfgValue == null) { cfgValue = "Заказ|Замовлення|Order"; } WpfHelper.SetAppGlobalValue("StatusTitle", cfgValue); cfgValue = CfgFileHelper.GetAppSetting("PanelWaitText"); if (cfgValue != null) { cfgValue = "Ожидать|Чекати|Wait"; } WpfHelper.SetAppGlobalValue("PanelWaitText", cfgValue); cfgValue = CfgFileHelper.GetAppSetting("StatusLang0"); if (cfgValue == null) { cfgValue = "Готовится|Готується|In process"; } WpfHelper.SetAppGlobalValue("Status1Langs", cfgValue); cfgValue = CfgFileHelper.GetAppSetting("StatusLang1"); if (cfgValue == null) { cfgValue = "Готов|Готово|Done"; } WpfHelper.SetAppGlobalValue("Status2Langs", cfgValue); cfgValue = CfgFileHelper.GetAppSetting("StatusLang2"); if (cfgValue == null) { cfgValue = "Забрали|Забрали|Taken"; } WpfHelper.SetAppGlobalValue("Status3Langs", cfgValue); }
public static void Main() { App app = new App(); // splash Splasher.Splash = new View.SplashScreen(); Splasher.ShowSplash(); //for (int i = 0; i < 5000; i += 1) //{ // MessageListener.Instance.ReceiveMessage(string.Format("Load module {0}", i)); // Thread.Sleep(1); //} // таймаут запуска приложения string cfgValue = CfgFileHelper.GetAppSetting("StartTimeout"); int startTimeout = 0; if (cfgValue != null) { startTimeout = cfgValue.ToInt(); } if (startTimeout != 0) { for (int i = startTimeout; i > 0; i--) { MessageListener.Instance.ReceiveMessage($"Таймаут запуска приложения - {i} секунд."); System.Threading.Thread.Sleep(1000); } } MessageListener.Instance.ReceiveMessage("Инициализация журнала событий..."); cfgValue = AppLib.InitAppLogger(); if (cfgValue != null) { appExit(1, "Ошибка инициализации журнала приложения: " + cfgValue); } System.Threading.Thread.Sleep(500); AppLib.WriteLogInfoMessage("**** Start application ****"); // защита PSW-файлом // текст в MessageListener.Instance прибинден к текстовому полю на сплэше MessageListener.Instance.ReceiveMessage("Проверка лицензии..."); pswLib.CheckProtectedResult checkProtectedResult; if (pswLib.Hardware.IsCurrentAppProtected("ClientOrderQueue", out checkProtectedResult) == false) { AppLib.WriteLogErrorMessage(checkProtectedResult.LogMessage); appExit(2, checkProtectedResult.CustomMessage); return; } System.Threading.Thread.Sleep(500); // информация о файлах, сборках и настройках из конфиг-файлов MessageListener.Instance.ReceiveMessage("Получаю информацию о сборках и настройках..."); // для хранения в свойствах приложения (из config-файла или др.) setAppGlobalValues(); AppLib.WriteLogInfoMessage(" - файл: {0}, Version {1}", AppEnvironment.GetAppFullFile(), AppEnvironment.GetAppVersion()); ITSAssemblyInfo asmInfo = new ITSAssemblyInfo("IntegraLib"); AppLib.WriteLogInfoMessage(" - Integra lib: '{0}', Version {1}", asmInfo.FullFileName, asmInfo.Version); asmInfo = new ITSAssemblyInfo("IntegraWPFLib"); AppLib.WriteLogInfoMessage(" - Integra WPF lib: '{0}', Version {1}", asmInfo.FullFileName, asmInfo.Version); AppLib.WriteLogInfoMessage("Системное окружение: " + AppEnvironment.GetEnvironmentString()); AppLib.WriteLogInfoMessage("Настройки из config-файла: " + CfgFileHelper.GetAppSettingsFromConfigFile()); // флажки для логов cfgValue = CfgFileHelper.GetAppSetting("IsWriteTraceMessages"); WpfHelper.SetAppGlobalValue("IsWriteTraceMessages", cfgValue.ToBool()); System.Threading.Thread.Sleep(300); // проверить доступность БД MessageListener.Instance.ReceiveMessage("Проверяю доступность к базе данных..."); AppLib.CheckDBConnection(typeof(KDSContext)); // настройка приложения app.InitializeComponent(); // определенные в app.xaml MessageListener.Instance.ReceiveMessage("Работаю..."); View.MainWindow mWindow = new View.MainWindow(); try { app.Run(mWindow); } catch (Exception ex) { AppLib.WriteLogErrorMessage(ex.ToString()); MessageBox.Show(ex.Message, "Error Application", MessageBoxButton.OK, MessageBoxImage.Error, MessageBoxResult.OK); } AppLib.WriteLogInfoMessage("**** End application ****"); }