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();
        }
Exemple #6
0
        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);
            }
        }
Exemple #8
0
        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);
//            }));
        }
Exemple #9
0
        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();
                        }
                    }
                }
            });
        }
Exemple #10
0
        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;
                    }
                }
            });
        }