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 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 __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 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 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 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)