private void ButtonOk_OnClick(object sender, RoutedEventArgs e) { if (tabControl != null && tabControl.SelectedIndex != 0) { tabControl.SelectedIndex = 0; return; } profilesList.IsCloseVisible = Visibility.Collapsed; profilesList.Items.Refresh(); tbProfileName.HideTip(); mainGrid.IsEnabled = false; ProfilesDbLogic.SaveProfilesToDb(m_ProfileEngine.PlainCollection); var dialog = new DialogWindow("Сообщение", "Профили в базе обновлены"); dialog.ButtonConfig(DialogWindow.EbConfig.OK); var result = dialog.ShowDialog(); if (result.HasValue && result.Value) { mainGrid.IsEnabled = true; } //if (NavigationService != null) //{ // ClearFilter(); // NavigationService.Navigate(Cache.Technician); //} }
private void AddShowMessageEvent(string Message) { m_ActionQueue.Enqueue(delegate { var dw = new DialogWindow("Ошибка", Message); dw.ButtonConfig(DialogWindow.EbConfig.OK); dw.ShowDialog(); }); }
private void SelectMode_Click(object Sender, RoutedEventArgs E) { //чтобы пользователь не смог нажать повторно на кнопку, чей обработчик уже исполняется или на любую другую кнопку этой формы VM.ButtonsModeIsEnabled = false; try { UserWorkMode userWorkMode = ((UserWorkMode)(Sender as Button).CommandParameter); Cache.Net.SetUserWorkMode(userWorkMode); switch (userWorkMode) { case UserWorkMode.Operator: case UserWorkMode.OperatorBuildMode: SelectOperatorMode(userWorkMode); break; case UserWorkMode.ServiceMan: //если мы были в режиме специальных измерений - надо перечитать содержимое профилей из базы данных чтобы откатить все изменения, сделанные в профилях в режиме специальных имерений // if (Cache.WorkMode == UserWorkMode.SpecialMeasure) // ProfilesDbLogic.ImportProfilesFromDb(); //запоминаем выбранный пользователем режим работы Cache.WorkMode = UserWorkMode.ServiceMan; Cache.Main.ServiceManLogin(); break; case UserWorkMode.SpecialMeasure: if (Settings.Default.IsTechPasswordEnabled) { //без ввода пароля наладчика не будем пускать в режим специальных измерений Cache.Password.AfterOkRoutine += SpecialMeasureCallBack; NavigationService?.Navigate(Cache.Password); } else { SpecialMeasureCallBack(NavigationService); } break; default: throw new NotImplementedException(); } } catch (Exception ex) { var dialog = new DialogWindow("Ошибка", ex.ToString()); dialog.ButtonConfig(DialogWindow.EbConfig.OK); dialog.ShowDialog(); } finally { VM.ButtonsModeIsEnabled = true; } }
public static void ImportProfilesFromDb() { var seviceConnected = false; List<ProfileItem> profileItems; try { profileItems = Cache.Net.GetProfilesFromServerDb(Cache.Main.MmeCode); Cache.Main.State = "online"; seviceConnected = true; } catch (CommunicationObjectFaultedException) { profileItems = Cache.Net.GetProfilesFromLocalDb(Cache.Main.MmeCode, ref seviceConnected); Cache.Main.State = "offline"; } if (profileItems == null || profileItems.Count <= 0 && !seviceConnected) return; if (profileItems.Count <= 0) { var dialog = new DialogWindow("Сообщение", "Нет активных профилей"); dialog.ButtonConfig(DialogWindow.EbConfig.OK); dialog.ShowDialog(); } var profiles = new List<Profile>(); foreach (var profileItem in profileItems) { var profile = new Profile(profileItem.ProfileName, profileItem.ProfileKey, profileItem.ProfileTS) { IsHeightMeasureEnabled = profileItem.IsHeightMeasureEnabled, ParametersClamp = profileItem.ParametersClamp, Height = profileItem.Height, Temperature = profileItem.Temperature }; foreach (var g in profileItem.GateTestParameters) profile.TestParametersAndNormatives.Add(g); foreach (var b in profileItem.BVTTestParameters) profile.TestParametersAndNormatives.Add(b); foreach (var v in profileItem.VTMTestParameters) profile.TestParametersAndNormatives.Add(v); foreach (var d in profileItem.DvDTestParameterses) profile.TestParametersAndNormatives.Add(d); profiles.Add(profile); } var dictionary = new ProfileDictionary(profiles); Cache.Main.IsProfilesParsed = true; Cache.ProfileEdit = new ProfilePage(dictionary); Cache.ProfileSelection = new ProfileSelectionPage(dictionary); Cache.ProfileSelection.SetNextButtonVisibility(Cache.Main.Param); }
private void ButtonAddTestParameters_OnClick(object sender, RoutedEventArgs e) { if (ComboBoxParametersType.SelectedItem == null) { return; } ClearFilter(); var type = ComboBoxParametersType.SelectedItem.ToString(); var item = m_ProfileEngine.PlainCollection[profilesList.SelectedIndex]; var order = item.TestParametersAndNormatives.Count > 0 ? item.TestParametersAndNormatives.Max(t => t.Order) : 0; if (order == 10) { var dialog = new DialogWindow("Ошибка", "Превышен лимит измерений!"); dialog.ButtonConfig(DialogWindow.EbConfig.OK); dialog.ShowDialog(); return; } if (type.Contains("Gate")) { item.TestParametersAndNormatives.Add(new GateTestParameters { Order = order + 1, IsEnabled = true }); } else if (type.Contains("BVT")) { item.TestParametersAndNormatives.Add(new BvtTestParameters { Order = order + 1, IsEnabled = true }); } else if (type.Contains("VTM")) { item.TestParametersAndNormatives.Add(new VtmTestParameters { Order = order + 1, IsEnabled = true }); } else if (type.Contains("DvDt")) { item.TestParametersAndNormatives.Add(new DvDtParameters { Order = order + 1, IsEnabled = true }); } else { item.IsHeightMeasureEnabled = true; } InitFilter(); }
private static void Current_DispatcherUnhandledException(object Sender, DispatcherUnhandledExceptionEventArgs E) { var dw = new DialogWindow("Application crashed!", string.Format("{0}\n{1}", E.Exception.Message, E.Exception)) { Top = SystemParameters.WorkArea.Top, Left = SystemParameters.WorkArea.Left, Width = SystemParameters.WorkArea.Width, Height = SystemParameters.WorkArea.Height, }; dw.ButtonConfig(DialogWindow.EbConfig.OK); dw.ShowDialog(); }
public MainWindow() { Application.Current.DispatcherUnhandledException += DispatcherUnhandledException; AppDomain.CurrentDomain.UnhandledException += CurrentDomainOnUnhandledException; try { Thread.CurrentThread.CurrentUICulture = new CultureInfo(Settings.Default.Localization); } catch (Exception ex) { var dw = new DialogWindow("Localization error", ex.Message); dw.ButtonConfig(DialogWindow.EbConfig.OK); dw.ShowDialog(); } Cache.Keyboards = new KeyboardLayouts(Path.IsPathRooted(Settings.Default.KeyboardsPath) ? Settings.Default.KeyboardsPath : Path.Combine( Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase), Settings.Default.KeyboardsPath)); InitializeComponent(); m_InitialClampLabelContent = clampLabel.Content; m_XRed = (SolidColorBrush)FindResource("xRed1"); m_XOrange = (SolidColorBrush)FindResource("xOrange1"); TechPasswordVisibility = Visibility.Collapsed; try { Cache.Main = this; if (Settings.Default.NormalWindow) { WindowStyle = WindowStyle.SingleBorderWindow; WindowStartupLocation = WindowStartupLocation.CenterScreen; ResizeMode = ResizeMode.CanResize; WindowState = WindowState.Maximized; } else { Top = SystemParameters.WorkArea.Top; Left = SystemParameters.WorkArea.Left; Width = SystemParameters.WorkArea.Width; Height = SystemParameters.WorkArea.Height; } Cache.Storage = new LocalStorage(Settings.Default.StoragePath); Cache.Net = new ControlLogic(); MmeCode = Settings.Default.MMECode; IsSafetyBreakIconVisible = false; RestartRoutine(null, null); } catch (Exception ex) { var dw = new DialogWindow(Properties.Resources.ApplicationStartError, ex.Message); dw.ButtonConfig(DialogWindow.EbConfig.OK); dw.ShowDialog(); Application.Current.Shutdown(1); } }
public static void ImportProfilesFromDb() { bool seviceConnected; List <ProfileItem> profileItems; profileItems = Cache.Net.GetProfilesFromLocalDb(Cache.Main.VM.MmeCode, out seviceConnected); if (profileItems == null || profileItems.Count <= 0 && !seviceConnected) { return; } if (profileItems.Count <= 0) { var dialog = new DialogWindow("Сообщение", "Нет активных профилей"); dialog.ButtonConfig(DialogWindow.EbConfig.OK); dialog.ShowDialog(); } var profiles = new List <Profile>(); foreach (var profileItem in profileItems) { var profile = new Profile(profileItem.ProfileName, profileItem.ProfileKey, profileItem.Version, profileItem.ProfileTS) { Key = profileItem.ProfileKey, NextGenerationKey = Guid.NewGuid(), IsHeightMeasureEnabled = profileItem.IsHeightMeasureEnabled, ParametersClamp = profileItem.ParametersClamp, Height = profileItem.Height, Temperature = profileItem.Temperature }; foreach (var g in profileItem.GateTestParameters) { profile.TestParametersAndNormatives.Add(g); } foreach (var b in profileItem.BVTTestParameters) { profile.TestParametersAndNormatives.Add(b); } foreach (var v in profileItem.VTMTestParameters) { profile.TestParametersAndNormatives.Add(v); } foreach (var d in profileItem.DvDTestParameterses) { profile.TestParametersAndNormatives.Add(d); } foreach (var a in profileItem.ATUTestParameters) { profile.TestParametersAndNormatives.Add(a); } foreach (var q in profileItem.QrrTqTestParameters) { profile.TestParametersAndNormatives.Add(q); } foreach (var t in profileItem.TOUTestParameters) { profile.TestParametersAndNormatives.Add(t); } profiles.Add(profile); } var dictionary = new ProfileDictionary(profiles); Debug.Assert(Cache.Main.Dispatcher != null, "Cache.Main.Dispatcher != null"); // Cache.Main.Dispatcher.BeginInvoke(new Action(() => // { // Cache.Main.IsProfilesParsed = true; // // Cache.ProfileEdit = new ProfilePage(dictionary); // Cache.ProfileSelection = new ProfileSelectionPage(dictionary); // Cache.ProfileSelection.SetNextButtonVisibility(Cache.Main.Param); // })); }
public void AddSafetyHandlerEvent(bool Alarm, ComplexSafety SafetyType, ComplexButtons Button) { m_ActionQueue.Enqueue(delegate { //максимально быстро реагируем на возникший Safety Alarm if (Alarm) { Cache.Net.Stop(); } //показываем или прячем иконку состояния системы Safety Cache.Main.IsSafetyBreakIconVisible = Alarm; if (Alarm) { //вывешиваем пользователю форму с сообщением о сработавшей системе безопасности string Message; //определяемся с тем, какая система безопасности сработала чтобы выдать пользователю вразумительное сообщение switch (SafetyType) { case ComplexSafety.Optical: //принятый параметр Button для случая оптической шторки не имеет никакого значения Message = Resources.SafetyOpticalAlarm; break; case ComplexSafety.Mechanical: //дописываем какой датчик сработал Message = Resources.CloseSafetyHood + " (" + Button.ToString() + ")."; break; default: Message = "Unknown safety system is in alarm, realization fault."; break; } var dw = new DialogWindow(Resources.Information, Message); dw.ButtonConfig(DialogWindow.EbConfig.OK); dw.ShowDialog(); if (dw.DialogResult ?? false) { //пользователь нажал в появившемся диалоговом окне кнопку OK //сбрасываем состояние SafetyTrig. справедливо и для оптической и механической шторки. только после этого можно разжимать пресс Cache.Net.ClearSafetyTrig(); //разжимаем зажимное устройство Cache.Clamp.IsRunning = false; Cache.Clamp.Unclamp(); //прячем иконку Safety Cache.Main.IsSafetyBreakIconVisible = false; //строим строку с именами устройств, которые не готовы к очередному измерению string NotReadyDevicesToStart = Cache.Net.NotReadyDevicesToStart(); string NotReadyDevicesToStartDynamic = Cache.Net.NotReadyDevicesToStartDynamic(); if (NotReadyDevicesToStartDynamic != "") { if (NotReadyDevicesToStart != "") { NotReadyDevicesToStart = NotReadyDevicesToStart + ", "; } NotReadyDevicesToStart = NotReadyDevicesToStart + NotReadyDevicesToStartDynamic; } //проверяем есть ли блоки, которые не готовы к проведению очередного измерения if (NotReadyDevicesToStart != "") { //ругаемся, т.к. есть блоки, которые не готовы выполнить очередное измерение //вывешиваем пользователю форму с сообщением о не готовых к очередному измерению блоках dw = new DialogWindow(Resources.Information, "Блоки: " + NotReadyDevicesToStart + " не готовы для проведения измерений."); dw.ButtonConfig(DialogWindow.EbConfig.OK); dw.ShowDialog(); } } } }); }
public void AddStopEvent() { m_ActionQueue.Enqueue(delegate { var dw = new DialogWindow(Resources.Information, Resources.StopButtonIsPressed); dw.ButtonConfig(DialogWindow.EbConfig.OK); dw.ShowDialog(); if (dw.DialogResult ?? false) { //пользователь нажал в появившемся диалоговом окне кнопку OK. читаем состояние аппаратной кнопки 'Стоп', которая имеет фиксацию bool IsButtonStopPressed = Cache.Net.GetButtonState(ComplexButtons.ButtonStop); //кнопка 'Стоп' с фиксацией, поэтому прежде чем отвести пресс проверим, что кнопка 'Стоп' отжата в исходное состояние switch (IsButtonStopPressed) { //кнопка 'Стоп' вжата - провоцируем её повторное срабатывание чтобы снова попасть в обработку нажатия кнопки 'Стоп' и так будем делать до тех пор, пока пользователь её не отожмёт case (true): Cache.Net.ProvocationButtonResponse(ComplexButtons.ButtonStop); break; //кнопка 'Стоп' отжата default: //сбрасываем состояние SafetyTrig. справедливо для оптической, механической и шторки подключенной как кнопка 'Стоп'. этот вызов сбросит состояние Halt пресса, только после этого можно разжать пресс Cache.Net.ClearSafetyTrig(); //разжимаем зажимное устройство Cache.Clamp.IsRunning = false; Cache.Clamp.Unclamp(); //прячем иконку Safety Cache.Main.IsSafetyBreakIconVisible = false; //строим строку с именами устройств, которые не готовы к очередному измерению string NotReadyDevicesToStart = Cache.Net.NotReadyDevicesToStart(); string NotReadyDevicesToStartDynamic = Cache.Net.NotReadyDevicesToStartDynamic(); if (NotReadyDevicesToStartDynamic != "") { if (NotReadyDevicesToStart != "") { NotReadyDevicesToStart = NotReadyDevicesToStart + ", "; } NotReadyDevicesToStart = NotReadyDevicesToStart + NotReadyDevicesToStartDynamic; } //проверяем есть ли блоки, которые не готовы к проведению очередного измерения if (NotReadyDevicesToStart != "") { //ругаемся, т.к. есть блоки, которые не готовы выполнить очередное измерение //вывешиваем пользователю форму с сообщением о не готовых к очередному измерению блоках dw = new DialogWindow(Resources.Information, "Блоки: " + NotReadyDevicesToStart + " не готовы для проведения измерений."); dw.ButtonConfig(DialogWindow.EbConfig.OK); dw.ShowDialog(); } break; } } }); }