Пример #1
0
        public void TestClearAll()
        {
            Project p = Utils.CreateProject();

            try {
                EventsFilter filter = new EventsFilter(p);

                filter.FilterPlayer(p.LocalTeamTemplate.List [0], true);
                Assert.AreEqual(1, filter.VisiblePlays.Count);
                Assert.AreEqual(1, filter.VisiblePlayers.Count);
                filter.ClearAll();
                Assert.AreEqual(3, filter.VisiblePlays.Count);
                Assert.AreEqual(10, filter.VisiblePlayers.Count);

                filter.FilterEventType(p.EventTypes [0], true);
                Assert.AreEqual(1, filter.VisiblePlays.Count);
                Assert.AreEqual(1, filter.VisibleEventTypes.Count);
                filter.ClearAll();
                Assert.AreEqual(3, filter.VisiblePlays.Count);
                Assert.AreEqual(13, filter.VisibleEventTypes.Count);

                filter.FilterEventTag(p.EventTypes [0], (p.EventTypes [0] as AnalysisEventType).Tags [0], true);
                Assert.AreEqual(0, filter.VisiblePlays.Count);
                Assert.AreEqual(1, filter.VisibleEventTypes.Count);
                filter.ClearAll();
                Assert.AreEqual(3, filter.VisiblePlays.Count);
                Assert.AreEqual(13, filter.VisibleEventTypes.Count);
            } finally {
                Utils.DeleteProject(p);
            }
        }
        void UpdateSelectionPriv(TreeIter iter, bool active, bool checkParents = true, bool recurse = true)
        {
            TreeIter child, parent;

            object o = store.GetValue(iter, COL_VALUE);

            store.IterParent(out parent, iter);

            if (o is Tag)
            {
                EventType evType = store.GetValue(parent, COL_VALUE) as EventType;
                if (evType != null)
                {
                    filter.FilterEventTag(evType, o as Tag, active);
                }
                else
                {
                    filter.FilterTag(o as Tag, active);
                }
            }
            else if (o is EventType)
            {
                filter.FilterEventType(o as EventType, active);
            }
            else if (o is Period)
            {
                filter.FilterPeriod(o as Period, active);
            }
            else if (o is Timer)
            {
                filter.FilterTimer(o as Timer, active);
            }
            store.SetValue(iter, COL_ACTIVE, active);

            /* Check its parents */
            if (active && checkParents && store.IterIsValid(parent))
            {
                UpdateSelectionPriv(parent, active, true, false);
            }

            /* Check/Uncheck all children */
            if (recurse)
            {
                bool state = filter.IgnoreUpdates;
                filter.IgnoreUpdates = true;
                store.IterChildren(out child, iter);
                while (store.IterIsValid(child))
                {
                    UpdateSelectionPriv(child, active, false, false);
                    store.IterNext(ref child);
                }
                filter.IgnoreUpdates = state;
            }

            if (recurse && checkParents)
            {
                filter.Update();
            }
        }
Пример #3
0
        public void TestFilterCategory()
        {
            Project p = Utils.CreateProject();

            try {
                EventsFilter filter = new EventsFilter(p);

                filter.FilterEventType(p.EventTypes [0], true);
                Assert.AreEqual(1, filter.VisibleEventTypes.Count);
                Assert.AreEqual(1, filter.VisiblePlays.Count);

                filter.FilterEventType(p.EventTypes [1], true);
                Assert.AreEqual(2, filter.VisibleEventTypes.Count);
                Assert.AreEqual(2, filter.VisiblePlays.Count);

                filter.FilterEventType(p.EventTypes [2], true);
                Assert.AreEqual(3, filter.VisibleEventTypes.Count);
                Assert.AreEqual(3, filter.VisiblePlays.Count);

                filter.FilterEventType(p.EventTypes [0], true);
                Assert.AreEqual(3, filter.VisibleEventTypes.Count);
                Assert.AreEqual(3, filter.VisiblePlays.Count);

                filter.FilterEventType(p.EventTypes [0], false);
                Assert.AreEqual(2, filter.VisibleEventTypes.Count);
                Assert.AreEqual(2, filter.VisiblePlays.Count);

                filter.FilterEventType(p.EventTypes [1], false);
                Assert.AreEqual(1, filter.VisibleEventTypes.Count);
                Assert.AreEqual(1, filter.VisiblePlays.Count);

                filter.FilterEventType(p.EventTypes [2], false);
                Assert.AreEqual(13, filter.VisibleEventTypes.Count);
                Assert.AreEqual(3, filter.VisiblePlays.Count);
            } finally {
                Utils.DeleteProject(p);
            }
        }