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 __init__(self, parent): super().__init__(parent, useExpansionColumn=False, typingSearchesSortColumn=False, style=wx.LC_VRULES | wx.BORDER_NONE) self.AddNamedImages('finished', images.todo_finished.GetBitmap()) self.AddNamedImages('not_finished', images.transparent.GetBitmap()) group_title_format = "%(title)s (%(count)d)" self.SetColumns([ ColumnDefn(title=_("todo.title"), width=200, valueGetter='title', groupKeyGetter='group', groupKeyConverter=self._display_content_group_key, groupTitleSingleItem=group_title_format, groupTitlePluralItems=group_title_format), ColumnDefn(title=_("todo.content"), width=200, valueGetter='content', groupKeyGetter='group', groupKeyConverter=self._display_content_group_key, groupTitleSingleItem=group_title_format, groupTitlePluralItems=group_title_format), ColumnDefn(title=_("todo.remark"), width=300, valueGetter='remark', groupKeyGetter=self._get_remark_group_key, isSpaceFilling=True, groupTitleSingleItem=group_title_format, groupTitlePluralItems=group_title_format), ColumnDefn(title=_("todo.finished_at"), valueGetter=self._get_finished_at_value, fixedWidth=150, groupKeyGetter=self._get_finished_at_group_key, groupTitleSingleItem=group_title_format, groupTitlePluralItems=group_title_format), ]) self.SetEmptyListMsg(_("todo_list.no_task")) self.CreateCheckStateColumn() self.checkStateColumn.checkStateGetter = lambda model: model.is_finished self.evenRowsBackColor = wx.Colour(245, 245, 245) self.oddRowsBackColor = wx.Colour(255, 255, 255) self.text_filter = self.TextFilter(self.columns) self.status_filter = self.StatusFilter() self.filter = Filter.Chain(self.status_filter, self.text_filter) self.rowFormatter = self._row_formatter self.Bind(OLVEvent.EVT_ITEM_CHECKED, self._on_item_checked)
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) : exec("filtre = Filter.Predicate(lambda track: %s)" % texteFiltre) listeFiltres.append(filtre) self.SetFilter(Filter.Chain(*listeFiltres)) self.RepopulateList() self.Refresh() self.OnCheck(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()