/// <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));
            }
        }
Esempio n. 2
0
        /// <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 =
        }
Esempio n. 3
0
    //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);
    }