def Filtrer(self, texteRecherche=None): listeFiltres = [] # Filtre barre de recherche if texteRecherche != None: filtre = Filter.TextSearch(self, self.columns[0:self.GetColumnCount()]) filtre.SetText(texteRecherche) listeFiltres.append(filtre) # Filtres de colonnes # for texteFiltre in self.formatageFiltres(self.listeFiltresColonnes) : # filtre = Filter.Predicate(lambda track: eval(texteFiltre)) # listeFiltres.append(filtre) filtres_colonnes = self.formatageFiltres(self.listeFiltresColonnes) if len(filtres_colonnes) > 0: texteFiltre = u" and ".join(filtres_colonnes) filtre = Filter.Predicate(lambda track: eval(texteFiltre)) listeFiltres.append(filtre) self.SetFilter(Filter.Chain(*listeFiltres)) self.RepopulateList() self.Refresh() self.OnCheck(None)
def testFilteringChain(self): filterMale = Filter.Predicate(lambda person: person.sex == "Male") filterContainsF = Filter.TextSearch(self.objectListView, text="f") self.objectListView.SetFilter(Filter.Chain(filterMale, filterContainsF)) self.objectListView.SetObjects(self.persons) self.assertEqual(len(self.objectListView.GetFilteredObjects()), 1) self.assertEqual(self.objectListView.GetFilteredObjects()[0].name, "Eric Fandango") self.objectListView.SetFilter(None)
def testFilteringPredicate(self): males = [x for x in self.persons if x.sex == "Male"] self.objectListView.SetFilter( Filter.Predicate(lambda person: person.sex == "Male")) self.objectListView.SetSortColumn(self.personColumns[-1]) self.objectListView.SetObjects(self.persons) self.assertEqual(set(self.objectListView.GetFilteredObjects()), set(males)) self.objectListView.SetFilter(None)
def __set_filter(self): _filter = Filter.Chain( Filter.Predicate(lambda item: item._level in self.__filters)) self.list_view.SetFilter(Filter.Chain(_filter)) self.list_view.RepopulateList()