public void RemoveOperationViewModel(OperationContainerView operationContainerView) { var operationViewModel = (OperationViewModel)operationContainerView.DataContext; MainModel.QueryExecuter.RemoveJob(operationViewModel.OperationModel); OperationViewModels.Remove(operationViewModel); Instance.InkableScene.Remove(operationContainerView); operationContainerView.Dispose(); foreach (var attachmentView in Instance.InkableScene.Elements.Where(e => e is AttachmentView).ToList()) { if (((AttachmentViewModel)attachmentView.DataContext).OperationViewModel == operationViewModel) { ((AttachmentView)attachmentView).Dispose(); Instance.InkableScene.Remove(attachmentView); } } if (operationViewModel.OperationModel is IFilterConsumerOperationModel) { foreach (var model in ((IFilterConsumerOperationModel)operationViewModel.OperationModel).LinkModels.ToArray()) { ((IFilterConsumerOperationModel)model.FromOperationModel).LinkModels.Remove(model); model.ToOperationModel.LinkModels.Remove(model); } } }
private void OperationTypeModelDropped(object sender, OperationTypeModelEventArgs e) { var width = OperationViewModel.WIDTH; var height = OperationViewModel.HEIGHT; var size = new Vec(width, height); var position = (Pt) new Vec(e.Bounds.Center.X, e.Bounds.Center.Y) - size / 2.0; var operationTypeModel = sender as OperationTypeModel; OperationViewModel operationViewModel = null; if (operationTypeModel.OperationType == OperationType.Histogram) { operationViewModel = CreateDefaultHistogramOperationViewModel(null, position); } else if (operationTypeModel.OperationType == OperationType.Example) { operationViewModel = CreateDefaultExampleOperationViewModel(position); } if (operationViewModel != null) { var operationContainerView = new OperationContainerView(); operationViewModel.Size = size; operationContainerView.DataContext = operationViewModel; InkableScene.Add(operationContainerView); } }
public OperationContainerView CopyOperationViewModel(OperationViewModel operationViewModel, Pt?centerPoint) { var newOperationContainerView = new OperationContainerView(); var newOperationViewModel = OperationViewModelFactory.CopyOperationViewModel(operationViewModel); addAttachmentViews(newOperationViewModel); OperationViewModels.Add(newOperationViewModel); if (centerPoint.HasValue) { newOperationViewModel.Position = (Pt)centerPoint - operationViewModel.Size / 2.0; } newOperationContainerView.DataContext = newOperationViewModel; InkableScene.Add(newOperationContainerView); return(newOperationContainerView); }
private void AttributeTransformationViewModelDropped(object sender, AttributeTransformationViewModelEventArgs e) { IGeometry mainPageBounds = e.Bounds.GetPolygon(); var hits = new List <AttributeTransformationViewModelEventHandler>(); foreach (var element in InkableScene.GetDescendants().OfType <AttributeTransformationViewModelEventHandler>()) { var geom = element.BoundsGeometry; if ((geom != null) && mainPageBounds.Intersects(geom)) { hits.Add(element); } } var width = OperationViewModel.WIDTH; var height = OperationViewModel.HEIGHT; var size = new Vec(width, height); var position = (Pt) new Vec(e.Bounds.Center.X, e.Bounds.Center.Y) - size / 2.0; var orderderHits = hits.OrderBy(fe => (fe.BoundsGeometry.Centroid.GetVec() - e.Bounds.Center.GetVec()).LengthSquared).ToList(); foreach (var element in InkableScene.GetDescendants().OfType <AttributeTransformationViewModelEventHandler>()) { element.AttributeTransformationViewModelDropped( sender as AttributeTransformationViewModel, e, (hits.Count() > 0) && (orderderHits[0] == element)); } if (!hits.Any()) { var operationContainerView = new OperationContainerView(); var histogramOperationViewModel = CreateDefaultHistogramOperationViewModel(e.AttributeTransformationModel.AttributeModel, position); histogramOperationViewModel.Size = size; operationContainerView.DataContext = histogramOperationViewModel; InkableScene.Add(operationContainerView); } }