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): wx.SearchCtrl.__init__(self, parent, size=(-1, -1), style=wx.TE_PROCESS_ENTER) self.parent = parent self.rechercheEnCours = False self.SetDescriptiveText(_(u"Rechercher un vaccin...")) self.ShowSearchButton(True) self.listView = self.parent.ctrl_listview nbreColonnes = self.listView.GetColumnCount() self.listView.SetFilter( Filter.TextSearch(self.listView, self.listView.columns[0:nbreColonnes])) self.SetCancelBitmap( wx.Bitmap(Chemins.GetStaticPath("Images/16x16/Interdit.png"), wx.BITMAP_TYPE_PNG)) self.SetSearchBitmap( wx.Bitmap(Chemins.GetStaticPath("Images/16x16/Loupe.png"), wx.BITMAP_TYPE_PNG)) self.Bind(wx.EVT_SEARCHCTRL_SEARCH_BTN, self.OnSearch) self.Bind(wx.EVT_SEARCHCTRL_CANCEL_BTN, self.OnCancel) self.Bind(wx.EVT_TEXT_ENTER, self.OnDoSearch) self.Bind(wx.EVT_TEXT, self.OnDoSearch)
def __init__(self, parent, historique=False): wx.SearchCtrl.__init__(self, parent, size=(-1, -1), style=wx.TE_PROCESS_ENTER) self.parent = parent self.historique = historique self.ouvrir_fiche = False self.SetDescriptiveText(_(u"Rechercher un individu...")) self.ShowSearchButton(True) self.listView = self.parent.ctrl_listview nbreColonnes = self.listView.GetColumnCount() self.listView.SetFilter(Filter.TextSearch(self.listView, self.listView.columns[0:nbreColonnes])) if self.historique == True : self.SetMenu(self.MakeMenu()) self.SetCancelBitmap(wx.Bitmap(Chemins.GetStaticPath("Images/16x16/Interdit.png"), wx.BITMAP_TYPE_PNG)) self.SetSearchBitmap(wx.Bitmap(Chemins.GetStaticPath("Images/16x16/Loupe.png"), wx.BITMAP_TYPE_PNG)) self.SetSearchMenuBitmap(wx.Bitmap(Chemins.GetStaticPath("Images/16x16/Loupe_et_menu.png"), wx.BITMAP_TYPE_PNG)) self.timer = wx.Timer(self) self.Bind(wx.EVT_TIMER, self.Recherche, self.timer) self.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown) self.Bind(wx.EVT_SEARCHCTRL_SEARCH_BTN, self.OnSearch) self.Bind(wx.EVT_SEARCHCTRL_CANCEL_BTN, self.OnCancel) self.Bind(wx.EVT_TEXT_ENTER, self.OnEnter) self.Bind(wx.EVT_TEXT, self.OnText) # HACK pour avoir le EVT_CHAR for child in self.GetChildren(): if isinstance(child, wx.TextCtrl): child.Bind(wx.EVT_CHAR, self.OnKeyDown) break
def initOLV(self, desc, coldesc, table, distinct=None): """ :param desc: the list title, e.g. _('Countries') :param coldesc: a dict of column name and column description :param table: the table name as a string e.g. 'Country_LV' :param distinct: a list of joins, e.g. [db.Recipeit, (db.Recipe, db.Recipe.recipeid==db.Recipeit.fk_recipeid)] """ self.EmptyListMsg = (_('No %s are found for the entered search criteria') % desc) self.listMinMenuDesc = (_('Preview - %s List - minimal') % desc) self.listNormMenuDesc = (_('Preview - %s List - normal') % desc) self.listMinReportDesc = (_('%s - list') % desc) self.listNormReportDesc = (_('%s - list') % desc) self.tableName = table ds = wx.GetApp().session with no_autoflush(ds): if distinct: joinedQuery = ds.query(getattr(db, self.tableName)) for item in distinct: joinedQuery = joinedQuery.join(item) self.setOlvQuery(joinedQuery.distinct()) else: self.setOlvQuery(ds.query(getattr(db, self.tableName))) cols = self.setColumnDef(coldesc, self.tableName) self.initObjectListView(None, cols) self.setGroupCols(0) xCols = len(cols) olvList = self.getList() olvList.SetFilter(Filter.TextSearch(olvList, olvList.columns[0:xCols]))
def testFilteringHead(self): self.objectListView.SetFilter(Filter.Head(1)) self.objectListView.SetObjects(self.persons) self.assertEqual(len(self.objectListView.GetFilteredObjects()), 1) self.assertEqual(self.objectListView.GetFilteredObjects()[0], self.persons[0]) self.objectListView.SetFilter(None)
def __init__(self, parent, numColonne): wx.TextCtrl.__init__(self, parent, -1, "", size=(-1,-1), style=wx.TE_PROCESS_ENTER) self.parent = parent self.listView = self.parent.ctrl_propositions nbreColonnes = self.listView.GetColumnCount() self.listView.SetFilter(Filter.TextSearch(self.listView, self.listView.columns[1:1])) self.Bind(wx.EVT_TEXT, self.OnDoSearch)
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 re_fill_list(self): a = P4Rm() self.Freeze() if a.db_nb_line is not -1: self.list.SortBy(0, ascending=False) self.list.SetFilter(Filter.Head(a.db_nb_line)) else: self.list.SetFilter(None) self.list.RepopulateList() self.Thaw()
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 __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 testFilteringTextSearch(self): containsF = [ x for x in self.persons if "f" in x.sex.lower() or "f" in x.name.lower() ] self.objectListView.SetFilter( Filter.TextSearch(self.objectListView, text="f")) self.objectListView.SetObjects(self.persons) self.assertEqual(set(self.objectListView.GetFilteredObjects()), set(containsF)) self.objectListView.SetFilter(None)
def testFilteringTail(self): self.objectListView.SetFilter(Filter.Tail(1)) self.objectListView.SetObjects(self.persons) # The group list will have a group header at row 0 so skip it if isinstance(self.objectListView, GroupListView): firstDataIndex = 1 else: firstDataIndex = 0 self.assertEqual(len(self.objectListView.GetFilteredObjects()), 1) self.assertEqual(self.objectListView.GetFilteredObjects()[0], self.persons[-1]) self.objectListView.SetFilter(None)
class DataBasePanel(scrolled.ScrolledPanel): def __init__(self, parent, statusbar): scrolled.ScrolledPanel.__init__(self, parent) self.statusbar = statusbar self.parent = parent self.list = FastObjectListView(self, sortable=True, style=wx.LC_REPORT | wx.SUNKEN_BORDER, size=(950, 350)) self.list.handleStandardKeys = False self.list.SetEmptyListMsg("This database has no rows") self.list.SetEmptyListMsgFont( wx.FFont(24, wx.DEFAULT, faceName="Tekton")) self.width_date = 170 self.width = 100 self.width_model = 130 self.check_date = 0 self.Bind(wx.EVT_LIST_ITEM_SELECTED, self.OnItemSelected, self.list) self.Bind(wx.EVT_LIST_COL_CLICK, self.OnItemSelected, self.list) mastersizer = wx.BoxSizer(wx.HORIZONTAL) mastersizer.Add(self.list, 0, wx.ALL, 5) pub.subscribe(self.fill_list, pubsub_fill_list_DB) pub.subscribe(self.re_fill_list, pubsub_update_db_nb_line) self.SetSizer(mastersizer) self.Layout() self.SetAutoLayout(1) self.SetupScrolling() self.initialize_list() c = DataBaseUse() c.initialize_database() def initialize_list(self): temp = [] ic_ = prog_icon_curve.GetBitmap() ImageIndex = self.list.AddImages(ic_) self.list.AddNamedImages("date", ic_) for i in range(len(headercolumnname) - 1): if i == 0: temp.append( ColumnDefn(headercolumnname[i], "center", self.width_date, valueGetter=databasename[0], imageGetter=ImageIndex, maximumWidth=self.width_date)) else: temp.append( ColumnDefn(headercolumnname[i], "center", self.width, valueGetter=databasename[i], maximumWidth=self.width)) i += 1 temp.append( ColumnDefn(headercolumnname[i], "center", self.width_model, valueGetter=databasename[i], maximumWidth=self.width_model)) self.list.SetColumns(temp) def fill_list(self, case, l): a = P4Rm() self.Freeze() if case == 0: self.list.SetObjects(l) elif case == 1: self.list.AddObject(l) pub.sendMessage(pubsub_refill_list_name_DB) pub.sendMessage(pubsub_search_combobox_DB) objects = self.list.GetObjects() self.list.SortBy(0, ascending=False) if a.db_nb_line is not -1: self.list.SetFilter(Filter.Head(a.db_nb_line)) self.list.RepopulateList() else: self.list.SetFilter(None) self.list.RefreshObjects(objects) self.Thaw()
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()