private FilterLinkModel createLinkModel(IOperationModel from, IOperationModel to) { FilterLinkModel filterLinkModel = null; if (from is IFilterProviderOperationModel && to is IFilterConsumerOperationModel) { filterLinkModel = new FilterLinkModel { FromOperationModel = (IFilterProviderOperationModel)from, ToOperationModel = (IFilterConsumerOperationModel)to }; if (isLinkAllowed(filterLinkModel)) { if (!((IFilterConsumerOperationModel)filterLinkModel.FromOperationModel).LinkModels.Contains(filterLinkModel) && !filterLinkModel.ToOperationModel.LinkModels.Contains(filterLinkModel)) { ((IFilterConsumerOperationModel)filterLinkModel.FromOperationModel).LinkModels.Add(filterLinkModel); filterLinkModel.ToOperationModel.LinkModels.Add(filterLinkModel); } return(filterLinkModel); } ErrorHandler.HandleError("Link cycles are not supported."); } return(null); }
private bool isLinkAllowed(FilterLinkModel filterLinkModel) { var linkModels = ((IFilterConsumerOperationModel)filterLinkModel.FromOperationModel).LinkModels.Where(lm => lm.FromOperationModel == filterLinkModel.FromOperationModel).ToList(); linkModels.Add(filterLinkModel); var chain = new HashSet <IFilterConsumerOperationModel>(); recursiveCheckForCiruclarLinking(linkModels, chain); if (chain.Contains(filterLinkModel.FromOperationModel as IFilterConsumerOperationModel)) { return(false); } var brushModels = ((IBrushableOperationModel)filterLinkModel.FromOperationModel).BrushOperationModels.ToList(); foreach (var brushableOperationModel in brushModels) { foreach (var linkModel in linkModels) { if (brushableOperationModel == linkModel.ToOperationModel) { BrushableViewController.Instance.Remove(brushableOperationModel); return(true); } } } return(true); }
public void RemoveFilterLinkViewModel(FilterLinkModel filterLinkModel) { (filterLinkModel.FromOperationModel as IFilterConsumerOperationModel).LinkModels.Remove(filterLinkModel); filterLinkModel.ToOperationModel.LinkModels.Remove(filterLinkModel); foreach (var linkViewModel in FilterLinkViewModels.ToArray()) { if (linkViewModel.FilterLinkModels.Contains(filterLinkModel)) { linkViewModel.FilterLinkModels.Remove(filterLinkModel); } if (linkViewModel.FilterLinkModels.Count == 0) { FilterLinkViewModels.Remove(linkViewModel); MainViewController.Instance.InkableScene.Remove( MainViewController.Instance.InkableScene.Elements.First(e => e is FilterLinkView && ((e as FilterLinkView).DataContext == linkViewModel))); } } }
private void MainPage_KeyDown(object sender, KeyRoutedEventArgs e) { var state = CoreWindow.GetForCurrentThread().GetKeyState(VirtualKey.Control); if ((state & CoreVirtualKeyStates.Down) == CoreVirtualKeyStates.Down) { if (e.Key == VirtualKey.Q) { MainViewController.Instance.MainModel.SampleSize = MainViewController.Instance.MainModel.SampleSize + 100; Debug.WriteLine("SampleSize : " + MainViewController.Instance.MainModel.SampleSize); msgTextBlock.Text = "SampleSize : " + MainViewController.Instance.MainModel.SampleSize; msgTextBlock.Opacity = 1; _messageTimer.Start(); } else if (e.Key == VirtualKey.A) { MainViewController.Instance.MainModel.SampleSize = Math.Max(MainViewController.Instance.MainModel.SampleSize - 100, 1.0); Debug.WriteLine("SampleSize : " + MainViewController.Instance.MainModel.SampleSize); msgTextBlock.Text = "SampleSize : " + MainViewController.Instance.MainModel.SampleSize; msgTextBlock.Opacity = 1; _messageTimer.Start(); } if (e.Key == VirtualKey.W) { MainViewController.Instance.MainModel.ThrottleInMillis = MainViewController.Instance.MainModel.ThrottleInMillis + 300.0; Debug.WriteLine("Throttle : " + MainViewController.Instance.MainModel.ThrottleInMillis); msgTextBlock.Text = "Throttle : " + MainViewController.Instance.MainModel.ThrottleInMillis; msgTextBlock.Opacity = 1; _messageTimer.Start(); } else if (e.Key == VirtualKey.S) { MainViewController.Instance.MainModel.ThrottleInMillis = Math.Max(MainViewController.Instance.MainModel.ThrottleInMillis - 300.0, 0.0); Debug.WriteLine("Throttle : " + MainViewController.Instance.MainModel.ThrottleInMillis); msgTextBlock.Text = "Throttle : " + MainViewController.Instance.MainModel.ThrottleInMillis; msgTextBlock.Opacity = 1; _messageTimer.Start(); } if (e.Key == VirtualKey.E) { MainViewController.Instance.MainModel.NrOfXBins = MainViewController.Instance.MainModel.NrOfXBins + 1; Debug.WriteLine("NrOfXBins : " + MainViewController.Instance.MainModel.NrOfXBins); msgTextBlock.Text = "NrOfXBins : " + MainViewController.Instance.MainModel.NrOfXBins; msgTextBlock.Opacity = 1; _messageTimer.Start(); } else if (e.Key == VirtualKey.D) { MainViewController.Instance.MainModel.NrOfXBins = Math.Max(MainViewController.Instance.MainModel.NrOfXBins - 1, 1.0); Debug.WriteLine("NrOfXBins : " + MainViewController.Instance.MainModel.NrOfXBins); msgTextBlock.Text = "NrOfXBins : " + MainViewController.Instance.MainModel.NrOfXBins; msgTextBlock.Opacity = 1; _messageTimer.Start(); } if (e.Key == VirtualKey.R) { MainViewController.Instance.MainModel.NrOfYBins = MainViewController.Instance.MainModel.NrOfYBins + 1; Debug.WriteLine("NrOfYBins : " + MainViewController.Instance.MainModel.NrOfYBins); msgTextBlock.Text = "NrOfYBins : " + MainViewController.Instance.MainModel.NrOfYBins; msgTextBlock.Opacity = 1; _messageTimer.Start(); } else if (e.Key == VirtualKey.F) { MainViewController.Instance.MainModel.NrOfYBins = Math.Max(MainViewController.Instance.MainModel.NrOfYBins - 1, 1.0); Debug.WriteLine("NrOfYBins : " + MainViewController.Instance.MainModel.NrOfYBins); msgTextBlock.Text = "NrOfYBins : " + MainViewController.Instance.MainModel.NrOfYBins; msgTextBlock.Opacity = 1; _messageTimer.Start(); } else if (e.Key == VirtualKey.L) { MainViewController.Instance.LoadCatalog(); } if (e.Key == VirtualKey.Number1) { MainViewController.Instance.MainModel.GraphRenderOption = GraphRenderOptions.Grid; Debug.WriteLine("GraphRenderOption : " + MainViewController.Instance.MainModel.GraphRenderOption); msgTextBlock.Text = "GraphRenderOption : " + MainViewController.Instance.MainModel.GraphRenderOption; msgTextBlock.Opacity = 1; _messageTimer.Start(); } if (e.Key == VirtualKey.Number2) { MainViewController.Instance.MainModel.GraphRenderOption = GraphRenderOptions.Cell; Debug.WriteLine("GraphRenderOption : " + MainViewController.Instance.MainModel.GraphRenderOption); msgTextBlock.Text = "GraphRenderOption : " + MainViewController.Instance.MainModel.GraphRenderOption; msgTextBlock.Opacity = 1; _messageTimer.Start(); } if (e.Key == VirtualKey.V) { MainViewController.Instance.MainModel.Verbose = !MainViewController.Instance.MainModel.Verbose; Debug.WriteLine("Verbose : " + MainViewController.Instance.MainModel.Verbose); msgTextBlock.Text = "Verbose : " + MainViewController.Instance.MainModel.Verbose; msgTextBlock.Opacity = 1; _messageTimer.Start(); } else if (e.Key == VirtualKey.H) { MainViewController.Instance.MainModel.IsDefaultHypothesisEnabled = !MainViewController.Instance.MainModel.IsDefaultHypothesisEnabled; Debug.WriteLine("IsDefaultHypothesisEnabled : " + MainViewController.Instance.MainModel.IsDefaultHypothesisEnabled); msgTextBlock.Text = "IsDefaultHypothesisEnabled : " + MainViewController.Instance.MainModel.IsDefaultHypothesisEnabled; msgTextBlock.Opacity = 1; _messageTimer.Start(); } else if (e.Key == VirtualKey.U) { MainViewController.Instance.MainModel.IsUnknownUnknownEnabled = !MainViewController.Instance.MainModel.IsUnknownUnknownEnabled; Debug.WriteLine("IsUnknownUnknownEnabled : " + MainViewController.Instance.MainModel.IsUnknownUnknownEnabled); msgTextBlock.Text = "IsUnknownUnknownEnabled : " + MainViewController.Instance.MainModel.IsUnknownUnknownEnabled; msgTextBlock.Opacity = 1; _messageTimer.Start(); } if (e.Key == VirtualKey.T) { var q1 = new HistogramOperationModel(MainViewController.Instance.MainModel.SchemaModel); var q2 = new HistogramOperationModel(MainViewController.Instance.MainModel.SchemaModel); q1.FilterModels.Add(new FilterModel()); var lm = new FilterLinkModel(); lm.FromOperationModel = q1; lm.ToOperationModel = q2; q1.LinkModels.Add(lm); q2.LinkModels.Add(lm); var tt = q1.Clone(); } if (e.Key == VirtualKey.P) { Debug.WriteLine("Render Fingers / Pen : " + MainViewController.Instance.MainModel.RenderFingersAndPen); MainViewController.Instance.MainModel.RenderFingersAndPen = !MainViewController.Instance.MainModel.RenderFingersAndPen; msgTextBlock.Text = "Fingers / Pen : " + MainViewController.Instance.MainModel.RenderFingersAndPen; msgTextBlock.Opacity = 1; _messageTimer.Start(); } } }