示例#1
0
        private async Task ApplyInternal(bool reset = true)
        {
            try
            {
                using (MessageView.ShowLoad("Применение изменений..."))
                {
                    Repository.SaveScenario(_clonedScenario);
                    StatisticsManager.ReRegister(_clonedScenario);
                    await _clonedScenario.Initialize();

                    _clonedScenario.AfterInitilize();
                }

                IsModified = false;

                if (reset)
                {
                    if (await SetScenario(_clonedScenario))
                    {
                        Applied?.Invoke();
                    }
                }
                else
                {
                    _originalSenario = _clonedScenario; //crutch
                    Applied?.Invoke();
                }
            }
            catch (Exception e)
            {
                Log.Error($"Ошибка инициализации сценария [{_clonedScenario.Name}]", e);
            }
        }
示例#2
0
        private async Task NewScenario(ScenarioBase newScenario)
        {
            BeginInitScenario();
            if (await newScenario.Initialize())
            {
                newScenario.AfterInitilize();
            }

            newScenario.Name = "Новый сценарий";
            _repository.AddScenario(newScenario);
            switchesGrid.Add(newScenario);
            await constructorsResolver.SetScenario(newScenario);

            EndInitScenario();
        }
示例#3
0
        public async Task Revert()
        {
            try
            {
                _clonedScenario = (ScenarioBase)Lazurite.Windows.Utils.Utils.CloneObject(_originalSenario);

                if (_clonedScenario is RemoteScenario == false)
                {
                    await _clonedScenario.Initialize();
                }

                buttonsView.Revert(_clonedScenario);
                _constructorView.Revert(_clonedScenario);
                IsModified = false;
            }
            catch (Exception e)
            {
                Log.ErrorFormat(e, "Ошибка инициализации сценария {0}", _clonedScenario.Name);
            }
        }
示例#4
0
        public async Task <bool> SetScenario(ScenarioBase scenario)
        {
            if (scenario != null)
            {
                using (StuckUILoadingWindow.Loading("Компоновка окна..."))
                {
                    try
                    {
                        _originalSenario = scenario;
                        _clonedScenario  = (ScenarioBase)Lazurite.Windows.Utils.Utils.CloneObject(_originalSenario);
                        if (_clonedScenario is SingleActionScenario s)
                        {
                            await _clonedScenario.Initialize();

                            contentPresenter.Content = _constructorView = new SingleActionScenarioView(s);
                        }
                        else if (_clonedScenario is CompositeScenario c)
                        {
                            await _clonedScenario.Initialize();

                            contentPresenter.Content = _constructorView = new CompositeScenarioView(c);
                        }
                        else if (_clonedScenario is RemoteScenario r)
                        {
                            contentPresenter.Content = _constructorView = new RemoteScenarioView(r);
                        }

                        buttonsView.SetScenario(_clonedScenario);
                        IsModified = false;
                        _constructorView.Modified += () =>
                        {
                            Modified?.Invoke();
                            buttonsView.ScenarioModified();
                            IsModified = true;
                        };
                        _constructorView.Failed += () =>
                        {
                            buttonsView.Failed();
                            IsFailed = true;
                        };
                        _constructorView.Succeed += () =>
                        {
                            buttonsView.Success();
                            IsFailed = false;
                        };
                        EmptyScenarioModeOff();
                        return(true);
                    }
                    catch (Exception e)
                    {
                        EmptyScenarioModeOn();
                        Log.Error($"Ошибка инициализации сценария [{scenario.Name}]", e);
                        return(false);
                    }
                }
            }
            else
            {
                EmptyScenarioModeOn();
                return(false);
            }
        }