Пример #1
0
    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)
Пример #3
0
    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)
Пример #4
0
    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 
Пример #5
0
    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)
Пример #7
0
 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)
Пример #8
0
 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) 
Пример #9
0
 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()
Пример #10
0
    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)
Пример #11
0
    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)
Пример #12
0
    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)
Пример #13
0
    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)
Пример #14
0
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()
Пример #15
0
 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()