private static void _mainPallet_StateChanged(object sender, PaletteSetStateEventArgs e) { if (e.NewState == StateEventIndex.Hide) { _mainPallet = null; _algorythimRepository = null; _partRepository = null; } }
public static void ShowPallet() { if (_mainPallet != null) { return; } _mainPallet = InitializeMainPallet(); _mainPallet.StateChanged += _mainPallet_StateChanged; _algorythimRepository = new AlgorythimRepository(); _partRepository = new PartRepository(); var especificationsView = new Views.EspecificationsControl(_partRepository); var algorythimView = new Views.AlgorythimControl(_partRepository, _algorythimRepository); var partsView = new Views.PartsListControl(_partRepository); var helper = new BuildingProcessHelper(); var prop = new SlabProperties { Algorythim = algorythimView.ViewModel, Parts = especificationsView.ViewModel }; especificationsView.ViewModel.WhenAnyValue(x => x.SelectedModulation).Subscribe(m => algorythimView.ViewModel.SelectedModulation = m); especificationsView.ViewModel.DrawSlab.Subscribe(async _ => { try { prop.MaxPoint = helper.GetMaxPoint(especificationsView.ViewModel.SelectedOutline); prop.StartPoint = helper.GetStartPoint(especificationsView.ViewModel.SelectedOutline, especificationsView.ViewModel.SpecifyStartPoint); using (var builder = new SlabBuilder(_partRepository, prop)) await builder.Start(); } catch (OperationCanceledException) { } catch (Autodesk.AutoCAD.Runtime.Exception e) { MessageBox.Show($"{e.Message}\n\n{e.StackTrace}"); } }); especificationsView.ViewModel.SelectOutline.Subscribe(_ => { try { especificationsView.ViewModel.SelectedOutline = helper.SelectOutline(); } catch (ArgumentException) { MessageBox.Show("Selecione um contorno válido. (Polilinha fechada)"); } }); _mainPallet.Add("Especificações", GetElementHost(especificationsView)); _mainPallet.Add("Algoritmo", GetElementHost(algorythimView)); _mainPallet.Add("Peças", GetElementHost(partsView)); }
public AlgorythimViewModel(IPartRepository partRepository, IAlgorythimRepository algorythimRepository) { _partRepository = partRepository; HasChanges = false; Options = algorythimRepository.Get(); StartLpList = new ReactiveList <Part>(); Reset = ReactiveCommand.Create(); Update = this.WhenAny(x => x.HasChanges, c => c.Value).ToCommand(); Options.Changed.Subscribe(x => HasChanges = true); this.WhenAnyValue(x => x.SelectedModulation).Subscribe(_ => ResetParts()); _partRepository.PartsChanged.Subscribe(_ => ResetParts()); Reset.Subscribe(_ => algorythimRepository.Reset()); Update.Subscribe(_ => { algorythimRepository.SaveChanges(); HasChanges = false; }); }
public AlgorythimControl(IPartRepository partRepository, IAlgorythimRepository algorythimRepository) { ViewModel = new AlgorythimViewModel(partRepository, algorythimRepository); DataContext = ViewModel; InitializeComponent(); }