/// <summary> /// Filter the view by applying Filterdescriptions /// </summary> private void ApplyFilter() { if (Filter == null && GeometryFilter == null) { return; } if (GeometryFilter != null) { ObservableCollection <Graphic> envelopedRows = new ObservableCollection <Graphic>(); foreach (Graphic row in this) { if (GeometryFilter.Invoke(row)) { envelopedRows.Add(row); } } _suppressCollectionChanged = true; this.Clear(); foreach (Graphic f in envelopedRows) { this.Add(f); } _suppressCollectionChanged = false; } if (Filter != null) { ObservableCollection <Graphic> filteredRows = new ObservableCollection <Graphic>(); foreach (Graphic row in this) { if (Filter.Invoke(row)) { filteredRows.Add(row); } } _suppressCollectionChanged = true; this.Clear(); foreach (Graphic f in filteredRows) { this.Add(f); } _suppressCollectionChanged = false; } // Raise the required notification if ApplySort will not be executed. if (SortDescriptions.Count == 0) { this.OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset)); } }
/// <summary> /// Deserialization Constructor /// </summary> /// <param name="info"></param> /// <param name="context"></param> protected GlyphPanel(SerializationInfo info, StreamingContext context) { _padding = (double)info.GetValue("Padding", typeof(double)); _size = (SizeF)info.GetValue("Size", typeof(SizeF)); _position = (PointF)info.GetValue("Position", typeof(PointF)); _color = (IColor)info.GetValue("Color", typeof(IColor)); _layout = (PanelLayoutMode)info.GetValue("PanelLayoutMode", typeof(PanelLayoutMode)); _geoFilter = (GeometryFilter)info.GetValue("Transform", typeof(Filter)); // _associatedGlyph = }
//removes the data with that key from this object //this function gets all the geometry as a group (nested if the members are already groups themselves)) public GH_GeometryGroup GetGeometryGroup(GeometryFilter filter = GeometryFilter.ALL) { GH_GeometryGroup geoGrp = new GH_GeometryGroup(); foreach (string key in _memberDict.Keys) { if (!this._visibility.ContainsKey(key) || !this._bakability.ContainsKey(key)) { continue; } if (filter == GeometryFilter.VISIBLE && !this._visibility[key]) { continue; } if (filter == GeometryFilter.BAKABLE && !this._bakability[key]) { continue; } if (filter == GeometryFilter.VISIBLE_AND_BAKABLE && (!this._bakability[key] && !this._visibility[key])) { continue; } GH_GeometryGroup subGrp = new GH_GeometryGroup(); foreach (var goo in _memberDict[key]) { if (!typeof(IGH_GeometricGoo).IsAssignableFrom(goo.GetType())) { continue; } subGrp.Objects.Add((IGH_GeometricGoo)goo); } geoGrp.Objects.Add(subGrp); } return(geoGrp); }