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); } }
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(); }
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); } }
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); } }