Fix regular expressions in sidebar filters
svn: r22967
This commit is contained in:
@@ -47,9 +47,8 @@ from .. import build_filter_model
|
|||||||
from . import SidebarFilter
|
from . import SidebarFilter
|
||||||
from gramps.gen.constfunc import cuni
|
from gramps.gen.constfunc import cuni
|
||||||
from gramps.gen.filters import GenericFilterFactory, rules
|
from gramps.gen.filters import GenericFilterFactory, rules
|
||||||
from gramps.gen.filters.rules.citation import (RegExpIdOf, HasIdOf, HasCitation,
|
from gramps.gen.filters.rules.citation import (RegExpIdOf, HasCitation, HasTag,
|
||||||
HasNoteMatchingSubstringOf,
|
HasNoteRegexp, MatchesFilter)
|
||||||
HasNoteRegexp, MatchesFilter)
|
|
||||||
from gramps.gen.utils.string import confidence
|
from gramps.gen.utils.string import confidence
|
||||||
GenericCitationFilter = GenericFilterFactory('Citation')
|
GenericCitationFilter = GenericFilterFactory('Citation')
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
@@ -76,6 +75,7 @@ class CitationSidebarFilter(SidebarFilter):
|
|||||||
|
|
||||||
self.filter_regex = Gtk.CheckButton(_('Use regular expressions'))
|
self.filter_regex = Gtk.CheckButton(_('Use regular expressions'))
|
||||||
|
|
||||||
|
self.tag = Gtk.ComboBox()
|
||||||
self.generic = Gtk.ComboBox()
|
self.generic = Gtk.ComboBox()
|
||||||
|
|
||||||
SidebarFilter.__init__(self, dbstate, uistate, "Citation")
|
SidebarFilter.__init__(self, dbstate, uistate, "Citation")
|
||||||
@@ -94,11 +94,18 @@ class CitationSidebarFilter(SidebarFilter):
|
|||||||
self.filter_conf.pack_start(cell, True)
|
self.filter_conf.pack_start(cell, True)
|
||||||
self.filter_conf.add_attribute(cell, 'text', 0)
|
self.filter_conf.add_attribute(cell, 'text', 0)
|
||||||
|
|
||||||
|
cell = Gtk.CellRendererText()
|
||||||
|
cell.set_property('width', self._FILTER_WIDTH)
|
||||||
|
cell.set_property('ellipsize', self._FILTER_ELLIPSIZE)
|
||||||
|
self.tag.pack_start(cell, True)
|
||||||
|
self.tag.add_attribute(cell, 'text', 0)
|
||||||
|
|
||||||
self.add_text_entry(_('ID'), self.filter_id)
|
self.add_text_entry(_('ID'), self.filter_id)
|
||||||
self.add_text_entry(_('Volume/Page'), self.filter_page)
|
self.add_text_entry(_('Volume/Page'), self.filter_page)
|
||||||
self.add_text_entry(_('Date'), self.filter_date)
|
self.add_text_entry(_('Date'), self.filter_date)
|
||||||
self.add_entry(_('Minimum Confidence|Min. Conf.'), self.filter_conf)
|
self.add_entry(_('Minimum Confidence|Min. Conf.'), self.filter_conf)
|
||||||
self.add_text_entry(_('Note'), self.filter_note)
|
self.add_text_entry(_('Note'), self.filter_note)
|
||||||
|
self.add_entry(_('Tag'), self.tag)
|
||||||
self.add_filter_entry(_('Custom filter'), self.generic)
|
self.add_filter_entry(_('Custom filter'), self.generic)
|
||||||
self.add_entry(None, self.filter_regex)
|
self.add_entry(None, self.filter_regex)
|
||||||
|
|
||||||
@@ -108,6 +115,7 @@ class CitationSidebarFilter(SidebarFilter):
|
|||||||
self.filter_date.set_text('')
|
self.filter_date.set_text('')
|
||||||
self.filter_conf.set_active(2)
|
self.filter_conf.set_active(2)
|
||||||
self.filter_note.set_text('')
|
self.filter_note.set_text('')
|
||||||
|
self.tag.set_active(0)
|
||||||
self.generic.set_active(0)
|
self.generic.set_active(0)
|
||||||
|
|
||||||
def get_filter(self):
|
def get_filter(self):
|
||||||
@@ -125,36 +133,39 @@ class CitationSidebarFilter(SidebarFilter):
|
|||||||
# conf = self.citn.get_confidence_level()
|
# conf = self.citn.get_confidence_level()
|
||||||
note = cuni(self.filter_note.get_text()).strip()
|
note = cuni(self.filter_note.get_text()).strip()
|
||||||
regex = self.filter_regex.get_active()
|
regex = self.filter_regex.get_active()
|
||||||
|
tag = self.tag.get_active() > 0
|
||||||
gen = self.generic.get_active() > 0
|
gen = self.generic.get_active() > 0
|
||||||
|
|
||||||
empty = not (gid or page or date or conf or note or regex or gen)
|
empty = not (gid or page or date or conf or note or regex or tag or gen)
|
||||||
if empty:
|
if empty:
|
||||||
generic_filter = None
|
generic_filter = None
|
||||||
else:
|
else:
|
||||||
generic_filter = GenericCitationFilter()
|
generic_filter = GenericCitationFilter()
|
||||||
if gid:
|
if gid:
|
||||||
if regex:
|
rule = RegExpIdOf([gid], use_regex=regex)
|
||||||
rule = RegExpIdOf([gid])
|
|
||||||
else:
|
|
||||||
rule = HasIdOf([gid])
|
|
||||||
generic_filter.add_rule(rule)
|
generic_filter.add_rule(rule)
|
||||||
|
|
||||||
rule = HasCitation([page, date, conf], use_regex=regex)
|
rule = HasCitation([page, date, conf], use_regex=regex)
|
||||||
generic_filter.add_rule(rule)
|
generic_filter.add_rule(rule)
|
||||||
|
|
||||||
if note:
|
if note:
|
||||||
if regex:
|
rule = HasNoteRegexp([note], use_regex=regex)
|
||||||
rule = HasNoteRegexp([note])
|
|
||||||
else:
|
|
||||||
rule = HasNoteMatchingSubstringOf([note])
|
|
||||||
generic_filter.add_rule(rule)
|
generic_filter.add_rule(rule)
|
||||||
|
|
||||||
if self.generic.get_active() != 0:
|
# check the Tag
|
||||||
model = self.generic.get_model()
|
if tag:
|
||||||
node = self.generic.get_active_iter()
|
model = self.tag.get_model()
|
||||||
obj = cuni(model.get_value(node, 0))
|
node = self.tag.get_active_iter()
|
||||||
rule = MatchesFilter([obj])
|
attr = model.get_value(node, 0)
|
||||||
generic_filter.add_rule(rule)
|
rule = HasTag([attr])
|
||||||
|
generic_filter.add_rule(rule)
|
||||||
|
|
||||||
|
if self.generic.get_active() != 0:
|
||||||
|
model = self.generic.get_model()
|
||||||
|
node = self.generic.get_active_iter()
|
||||||
|
obj = cuni(model.get_value(node, 0))
|
||||||
|
rule = MatchesFilter([obj])
|
||||||
|
generic_filter.add_rule(rule)
|
||||||
|
|
||||||
return generic_filter
|
return generic_filter
|
||||||
|
|
||||||
@@ -165,3 +176,14 @@ class CitationSidebarFilter(SidebarFilter):
|
|||||||
all_filter.add_rule(rules.citation.AllCitations([]))
|
all_filter.add_rule(rules.citation.AllCitations([]))
|
||||||
self.generic.set_model(build_filter_model('Citation', [all_filter]))
|
self.generic.set_model(build_filter_model('Citation', [all_filter]))
|
||||||
self.generic.set_active(0)
|
self.generic.set_active(0)
|
||||||
|
|
||||||
|
def on_tags_changed(self, tag_list):
|
||||||
|
"""
|
||||||
|
Update the list of tags in the tag filter.
|
||||||
|
"""
|
||||||
|
model = Gtk.ListStore(str)
|
||||||
|
model.append(('',))
|
||||||
|
for tag_name in tag_list:
|
||||||
|
model.append((tag_name,))
|
||||||
|
self.tag.set_model(model)
|
||||||
|
self.tag.set_active(0)
|
||||||
|
@@ -46,9 +46,8 @@ from .. import build_filter_model
|
|||||||
from . import SidebarFilter
|
from . import SidebarFilter
|
||||||
from gramps.gen.constfunc import cuni
|
from gramps.gen.constfunc import cuni
|
||||||
from gramps.gen.filters import GenericFilterFactory, rules
|
from gramps.gen.filters import GenericFilterFactory, rules
|
||||||
from gramps.gen.filters.rules.event import (RegExpIdOf, HasIdOf, HasNoteRegexp,
|
from gramps.gen.filters.rules.event import (RegExpIdOf, HasNoteRegexp,
|
||||||
HasNoteMatchingSubstringOf, MatchesFilter,
|
MatchesFilter, HasEvent, HasTag)
|
||||||
HasEvent)
|
|
||||||
|
|
||||||
GenericEventFilter = GenericFilterFactory('Event')
|
GenericEventFilter = GenericFilterFactory('Event')
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
@@ -78,6 +77,7 @@ class EventSidebarFilter(SidebarFilter):
|
|||||||
|
|
||||||
self.filter_regex = Gtk.CheckButton(_('Use regular expressions'))
|
self.filter_regex = Gtk.CheckButton(_('Use regular expressions'))
|
||||||
|
|
||||||
|
self.tag = Gtk.ComboBox()
|
||||||
self.generic = Gtk.ComboBox()
|
self.generic = Gtk.ComboBox()
|
||||||
|
|
||||||
SidebarFilter.__init__(self, dbstate, uistate, "Event")
|
SidebarFilter.__init__(self, dbstate, uistate, "Event")
|
||||||
@@ -90,6 +90,12 @@ class EventSidebarFilter(SidebarFilter):
|
|||||||
self.generic.add_attribute(cell, 'text', 0)
|
self.generic.add_attribute(cell, 'text', 0)
|
||||||
self.on_filters_changed('Event')
|
self.on_filters_changed('Event')
|
||||||
|
|
||||||
|
cell = Gtk.CellRendererText()
|
||||||
|
cell.set_property('width', self._FILTER_WIDTH)
|
||||||
|
cell.set_property('ellipsize', self._FILTER_ELLIPSIZE)
|
||||||
|
self.tag.pack_start(cell, True)
|
||||||
|
self.tag.add_attribute(cell, 'text', 0)
|
||||||
|
|
||||||
self.etype.get_child().set_width_chars(5)
|
self.etype.get_child().set_width_chars(5)
|
||||||
|
|
||||||
self.add_text_entry(_('ID'), self.filter_id)
|
self.add_text_entry(_('ID'), self.filter_id)
|
||||||
@@ -99,6 +105,7 @@ class EventSidebarFilter(SidebarFilter):
|
|||||||
self.add_text_entry(_('Date'), self.filter_date)
|
self.add_text_entry(_('Date'), self.filter_date)
|
||||||
self.add_text_entry(_('Place'), self.filter_place)
|
self.add_text_entry(_('Place'), self.filter_place)
|
||||||
self.add_text_entry(_('Note'), self.filter_note)
|
self.add_text_entry(_('Note'), self.filter_note)
|
||||||
|
self.add_entry(_('Tag'), self.tag)
|
||||||
self.add_filter_entry(_('Custom filter'), self.generic)
|
self.add_filter_entry(_('Custom filter'), self.generic)
|
||||||
self.add_regex_entry(self.filter_regex)
|
self.add_regex_entry(self.filter_regex)
|
||||||
|
|
||||||
@@ -110,6 +117,7 @@ class EventSidebarFilter(SidebarFilter):
|
|||||||
self.filter_place.set_text('')
|
self.filter_place.set_text('')
|
||||||
self.filter_note.set_text('')
|
self.filter_note.set_text('')
|
||||||
self.etype.get_child().set_text('')
|
self.etype.get_child().set_text('')
|
||||||
|
self.tag.set_active(0)
|
||||||
self.generic.set_active(0)
|
self.generic.set_active(0)
|
||||||
|
|
||||||
def get_filter(self):
|
def get_filter(self):
|
||||||
@@ -120,20 +128,18 @@ class EventSidebarFilter(SidebarFilter):
|
|||||||
place = cuni(self.filter_place.get_text()).strip()
|
place = cuni(self.filter_place.get_text()).strip()
|
||||||
note = cuni(self.filter_note.get_text()).strip()
|
note = cuni(self.filter_note.get_text()).strip()
|
||||||
regex = self.filter_regex.get_active()
|
regex = self.filter_regex.get_active()
|
||||||
|
tag = self.tag.get_active() > 0
|
||||||
generic = self.generic.get_active() > 0
|
generic = self.generic.get_active() > 0
|
||||||
etype = self.filter_event.get_type().xml_str()
|
etype = self.filter_event.get_type().xml_str()
|
||||||
|
|
||||||
empty = not (gid or desc or mainparts or date or place or note
|
empty = not (gid or desc or mainparts or date or place or note
|
||||||
or etype or regex or generic)
|
or etype or regex or tag or generic)
|
||||||
if empty:
|
if empty:
|
||||||
generic_filter = None
|
generic_filter = None
|
||||||
else:
|
else:
|
||||||
generic_filter = GenericEventFilter()
|
generic_filter = GenericEventFilter()
|
||||||
if gid:
|
if gid:
|
||||||
if regex:
|
rule = RegExpIdOf([gid], use_regex=regex)
|
||||||
rule = RegExpIdOf([gid])
|
|
||||||
else:
|
|
||||||
rule = HasIdOf([gid])
|
|
||||||
generic_filter.add_rule(rule)
|
generic_filter.add_rule(rule)
|
||||||
|
|
||||||
rule = HasEvent([etype, date, place, desc, mainparts],
|
rule = HasEvent([etype, date, place, desc, mainparts],
|
||||||
@@ -141,18 +147,23 @@ class EventSidebarFilter(SidebarFilter):
|
|||||||
generic_filter.add_rule(rule)
|
generic_filter.add_rule(rule)
|
||||||
|
|
||||||
if note:
|
if note:
|
||||||
if regex:
|
rule = HasNoteRegexp([note], use_regex=regex)
|
||||||
rule = HasNoteRegexp([note])
|
|
||||||
else:
|
|
||||||
rule = HasNoteMatchingSubstringOf([note])
|
|
||||||
generic_filter.add_rule(rule)
|
generic_filter.add_rule(rule)
|
||||||
|
|
||||||
if self.generic.get_active() != 0:
|
# check the Tag
|
||||||
model = self.generic.get_model()
|
if tag:
|
||||||
node = self.generic.get_active_iter()
|
model = self.tag.get_model()
|
||||||
obj = cuni(model.get_value(node, 0))
|
node = self.tag.get_active_iter()
|
||||||
rule = MatchesFilter([obj])
|
attr = model.get_value(node, 0)
|
||||||
generic_filter.add_rule(rule)
|
rule = HasTag([attr])
|
||||||
|
generic_filter.add_rule(rule)
|
||||||
|
|
||||||
|
if self.generic.get_active() != 0:
|
||||||
|
model = self.generic.get_model()
|
||||||
|
node = self.generic.get_active_iter()
|
||||||
|
obj = cuni(model.get_value(node, 0))
|
||||||
|
rule = MatchesFilter([obj])
|
||||||
|
generic_filter.add_rule(rule)
|
||||||
|
|
||||||
return generic_filter
|
return generic_filter
|
||||||
|
|
||||||
@@ -163,3 +174,14 @@ class EventSidebarFilter(SidebarFilter):
|
|||||||
all_filter.add_rule(rules.event.AllEvents([]))
|
all_filter.add_rule(rules.event.AllEvents([]))
|
||||||
self.generic.set_model(build_filter_model('Event', [all_filter]))
|
self.generic.set_model(build_filter_model('Event', [all_filter]))
|
||||||
self.generic.set_active(0)
|
self.generic.set_active(0)
|
||||||
|
|
||||||
|
def on_tags_changed(self, tag_list):
|
||||||
|
"""
|
||||||
|
Update the list of tags in the tag filter.
|
||||||
|
"""
|
||||||
|
model = Gtk.ListStore(str)
|
||||||
|
model.append(('',))
|
||||||
|
for tag_name in tag_list:
|
||||||
|
model.append((tag_name,))
|
||||||
|
self.tag.set_model(model)
|
||||||
|
self.tag.set_active(0)
|
||||||
|
@@ -47,12 +47,10 @@ from .. import build_filter_model
|
|||||||
from . import SidebarFilter
|
from . import SidebarFilter
|
||||||
from gramps.gen.constfunc import cuni
|
from gramps.gen.constfunc import cuni
|
||||||
from gramps.gen.filters import GenericFilterFactory, rules
|
from gramps.gen.filters import GenericFilterFactory, rules
|
||||||
from gramps.gen.filters.rules.family import (RegExpIdOf, HasIdOf, RegExpFatherName,
|
from gramps.gen.filters.rules.family import (RegExpIdOf, RegExpFatherName,
|
||||||
SearchFatherName, RegExpMotherName,
|
RegExpMotherName, RegExpChildName,
|
||||||
SearchMotherName, RegExpChildName,
|
HasEvent, HasRelType, HasTag,
|
||||||
SearchChildName, HasEvent, HasRelType,
|
HasNoteRegexp, MatchesFilter)
|
||||||
HasTag, HasNoteRegexp,
|
|
||||||
HasNoteMatchingSubstringOf, MatchesFilter)
|
|
||||||
|
|
||||||
GenericFamilyFilter = GenericFilterFactory('Family')
|
GenericFamilyFilter = GenericFilterFactory('Family')
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
@@ -154,31 +152,19 @@ class FamilySidebarFilter(SidebarFilter):
|
|||||||
else:
|
else:
|
||||||
generic_filter = GenericFamilyFilter()
|
generic_filter = GenericFamilyFilter()
|
||||||
if gid:
|
if gid:
|
||||||
if regex:
|
rule = RegExpIdOf([gid], use_regex=regex)
|
||||||
rule = RegExpIdOf([gid])
|
|
||||||
else:
|
|
||||||
rule = HasIdOf([gid])
|
|
||||||
generic_filter.add_rule(rule)
|
generic_filter.add_rule(rule)
|
||||||
|
|
||||||
if father:
|
if father:
|
||||||
if regex:
|
rule = RegExpFatherName([father], use_regex=regex)
|
||||||
rule = RegExpFatherName([father])
|
|
||||||
else:
|
|
||||||
rule = SearchFatherName([father])
|
|
||||||
generic_filter.add_rule(rule)
|
generic_filter.add_rule(rule)
|
||||||
|
|
||||||
if mother:
|
if mother:
|
||||||
if regex:
|
rule = RegExpMotherName([mother], use_regex=regex)
|
||||||
rule = RegExpMotherName([mother])
|
|
||||||
else:
|
|
||||||
rule = SearchMotherName([mother])
|
|
||||||
generic_filter.add_rule(rule)
|
generic_filter.add_rule(rule)
|
||||||
|
|
||||||
if child:
|
if child:
|
||||||
if regex:
|
rule = RegExpChildName([child], use_regex=regex)
|
||||||
rule = RegExpChildName([child])
|
|
||||||
else:
|
|
||||||
rule = SearchChildName([child])
|
|
||||||
generic_filter.add_rule(rule)
|
generic_filter.add_rule(rule)
|
||||||
|
|
||||||
if etype:
|
if etype:
|
||||||
@@ -190,10 +176,7 @@ class FamilySidebarFilter(SidebarFilter):
|
|||||||
generic_filter.add_rule(rule)
|
generic_filter.add_rule(rule)
|
||||||
|
|
||||||
if note:
|
if note:
|
||||||
if regex:
|
rule = HasNoteRegexp([note], use_regex=regex)
|
||||||
rule = HasNoteRegexp([note])
|
|
||||||
else:
|
|
||||||
rule = HasNoteMatchingSubstringOf([note])
|
|
||||||
generic_filter.add_rule(rule)
|
generic_filter.add_rule(rule)
|
||||||
|
|
||||||
# check the Tag
|
# check the Tag
|
||||||
|
@@ -46,9 +46,8 @@ from .. import build_filter_model
|
|||||||
from . import SidebarFilter
|
from . import SidebarFilter
|
||||||
from gramps.gen.constfunc import cuni
|
from gramps.gen.constfunc import cuni
|
||||||
from gramps.gen.filters import GenericFilterFactory, rules
|
from gramps.gen.filters import GenericFilterFactory, rules
|
||||||
from gramps.gen.filters.rules.media import (RegExpIdOf, HasIdOf, HasMedia, HasTag,
|
from gramps.gen.filters.rules.media import (RegExpIdOf, HasMedia, HasTag,
|
||||||
HasNoteRegexp, MatchesFilter,
|
HasNoteRegexp, MatchesFilter)
|
||||||
HasNoteMatchingSubstringOf)
|
|
||||||
|
|
||||||
GenericMediaFilter = GenericFilterFactory('Media')
|
GenericMediaFilter = GenericFilterFactory('Media')
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
@@ -126,20 +125,14 @@ class MediaSidebarFilter(SidebarFilter):
|
|||||||
else:
|
else:
|
||||||
generic_filter = GenericMediaFilter()
|
generic_filter = GenericMediaFilter()
|
||||||
if gid:
|
if gid:
|
||||||
if regex:
|
rule = RegExpIdOf([gid], use_regex=regex)
|
||||||
rule = RegExpIdOf([gid])
|
|
||||||
else:
|
|
||||||
rule = HasIdOf([gid])
|
|
||||||
generic_filter.add_rule(rule)
|
generic_filter.add_rule(rule)
|
||||||
|
|
||||||
rule = HasMedia([title, mime, path, date], use_regex=regex)
|
rule = HasMedia([title, mime, path, date], use_regex=regex)
|
||||||
generic_filter.add_rule(rule)
|
generic_filter.add_rule(rule)
|
||||||
|
|
||||||
if note:
|
if note:
|
||||||
if regex:
|
rule = HasNoteRegexp([note], use_regex=regex)
|
||||||
rule = HasNoteRegexp([note])
|
|
||||||
else:
|
|
||||||
rule = HasNoteMatchingSubstringOf([note])
|
|
||||||
generic_filter.add_rule(rule)
|
generic_filter.add_rule(rule)
|
||||||
|
|
||||||
# check the Tag
|
# check the Tag
|
||||||
|
@@ -47,8 +47,8 @@ from .. import build_filter_model
|
|||||||
from . import SidebarFilter
|
from . import SidebarFilter
|
||||||
from gramps.gen.constfunc import cuni
|
from gramps.gen.constfunc import cuni
|
||||||
from gramps.gen.filters import GenericFilterFactory, rules
|
from gramps.gen.filters import GenericFilterFactory, rules
|
||||||
from gramps.gen.filters.rules.note import (RegExpIdOf, HasIdOf, HasNote,
|
from gramps.gen.filters.rules.note import (RegExpIdOf, HasNote, MatchesFilter,
|
||||||
MatchesFilter, HasTag)
|
HasTag)
|
||||||
|
|
||||||
GenericNoteFilter = GenericFilterFactory('Note')
|
GenericNoteFilter = GenericFilterFactory('Note')
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
@@ -122,10 +122,7 @@ class NoteSidebarFilter(SidebarFilter):
|
|||||||
else:
|
else:
|
||||||
generic_filter = GenericNoteFilter()
|
generic_filter = GenericNoteFilter()
|
||||||
if gid:
|
if gid:
|
||||||
if regex:
|
rule = RegExpIdOf([gid], use_regex=regex)
|
||||||
rule = RegExpIdOf([gid])
|
|
||||||
else:
|
|
||||||
rule = HasIdOf([gid])
|
|
||||||
generic_filter.add_rule(rule)
|
generic_filter.add_rule(rule)
|
||||||
|
|
||||||
rule = HasNote([text, ntype], use_regex=regex)
|
rule = HasNote([text, ntype], use_regex=regex)
|
||||||
|
@@ -48,11 +48,11 @@ from .. import build_filter_model
|
|||||||
from . import SidebarFilter
|
from . import SidebarFilter
|
||||||
from gramps.gen.constfunc import cuni
|
from gramps.gen.constfunc import cuni
|
||||||
from gramps.gen.filters import GenericFilter, rules
|
from gramps.gen.filters import GenericFilter, rules
|
||||||
from gramps.gen.filters.rules.person import (RegExpName, SearchName, RegExpIdOf,
|
from gramps.gen.filters.rules.person import (RegExpName, RegExpIdOf, IsMale,
|
||||||
MatchIdOf, IsMale, IsFemale,
|
IsFemale, HasUnknownGender,
|
||||||
HasUnknownGender, HasEvent, HasTag,
|
HasEvent, HasTag, HasBirth,
|
||||||
HasBirth, HasDeath, HasNoteRegexp,
|
HasDeath, HasNoteRegexp,
|
||||||
HasNoteMatchingSubstringOf, MatchesFilter)
|
MatchesFilter)
|
||||||
|
|
||||||
def extract_text(entry_widget):
|
def extract_text(entry_widget):
|
||||||
"""
|
"""
|
||||||
@@ -184,19 +184,13 @@ class PersonSidebarFilter(SidebarFilter):
|
|||||||
# if the name is not empty, choose either the regular expression
|
# if the name is not empty, choose either the regular expression
|
||||||
# version or the normal text match
|
# version or the normal text match
|
||||||
if name:
|
if name:
|
||||||
if regex:
|
rule = RegExpName([name], use_regex=regex)
|
||||||
rule = RegExpName([name])
|
|
||||||
else:
|
|
||||||
rule = SearchName([name])
|
|
||||||
generic_filter.add_rule(rule)
|
generic_filter.add_rule(rule)
|
||||||
|
|
||||||
# if the id is not empty, choose either the regular expression
|
# if the id is not empty, choose either the regular expression
|
||||||
# version or the normal text match
|
# version or the normal text match
|
||||||
if gid:
|
if gid:
|
||||||
if regex:
|
rule = RegExpIdOf([gid], use_regex=regex)
|
||||||
rule = RegExpIdOf([gid])
|
|
||||||
else:
|
|
||||||
rule = MatchIdOf([gid])
|
|
||||||
generic_filter.add_rule(rule)
|
generic_filter.add_rule(rule)
|
||||||
|
|
||||||
# check the gender, and select the right rule based on gender
|
# check the gender, and select the right rule based on gender
|
||||||
@@ -228,10 +222,7 @@ class PersonSidebarFilter(SidebarFilter):
|
|||||||
|
|
||||||
# Build note filter if needed
|
# Build note filter if needed
|
||||||
if note:
|
if note:
|
||||||
if regex:
|
rule = HasNoteRegexp([note], use_regex=regex)
|
||||||
rule = HasNoteRegexp([note])
|
|
||||||
else:
|
|
||||||
rule = HasNoteMatchingSubstringOf([note])
|
|
||||||
generic_filter.add_rule(rule)
|
generic_filter.add_rule(rule)
|
||||||
|
|
||||||
# check the Tag
|
# check the Tag
|
||||||
|
@@ -47,9 +47,8 @@ from .. import build_filter_model
|
|||||||
from . import SidebarFilter
|
from . import SidebarFilter
|
||||||
from gramps.gen.constfunc import cuni
|
from gramps.gen.constfunc import cuni
|
||||||
from gramps.gen.filters import GenericFilterFactory, rules
|
from gramps.gen.filters import GenericFilterFactory, rules
|
||||||
from gramps.gen.filters.rules.place import (RegExpIdOf, HasIdOf, HasPlace,
|
from gramps.gen.filters.rules.place import (RegExpIdOf, HasPlace, HasTag,
|
||||||
HasNoteRegexp, HasNoteMatchingSubstringOf,
|
HasNoteRegexp, MatchesFilter)
|
||||||
MatchesFilter)
|
|
||||||
|
|
||||||
GenericPlaceFilter = GenericFilterFactory('Place')
|
GenericPlaceFilter = GenericFilterFactory('Place')
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
@@ -75,6 +74,7 @@ class PlaceSidebarFilter(SidebarFilter):
|
|||||||
self.filter_note = widgets.BasicEntry()
|
self.filter_note = widgets.BasicEntry()
|
||||||
|
|
||||||
self.filter_regex = Gtk.CheckButton(_('Use regular expressions'))
|
self.filter_regex = Gtk.CheckButton(_('Use regular expressions'))
|
||||||
|
self.tag = Gtk.ComboBox()
|
||||||
self.generic = Gtk.ComboBox()
|
self.generic = Gtk.ComboBox()
|
||||||
|
|
||||||
SidebarFilter.__init__(self, dbstate, uistate, "Place")
|
SidebarFilter.__init__(self, dbstate, uistate, "Place")
|
||||||
@@ -87,6 +87,12 @@ class PlaceSidebarFilter(SidebarFilter):
|
|||||||
self.generic.add_attribute(cell, 'text', 0)
|
self.generic.add_attribute(cell, 'text', 0)
|
||||||
self.on_filters_changed('Place')
|
self.on_filters_changed('Place')
|
||||||
|
|
||||||
|
cell = Gtk.CellRendererText()
|
||||||
|
cell.set_property('width', self._FILTER_WIDTH)
|
||||||
|
cell.set_property('ellipsize', self._FILTER_ELLIPSIZE)
|
||||||
|
self.tag.pack_start(cell, True)
|
||||||
|
self.tag.add_attribute(cell, 'text', 0)
|
||||||
|
|
||||||
self.add_text_entry(_('ID'), self.filter_id)
|
self.add_text_entry(_('ID'), self.filter_id)
|
||||||
self.add_text_entry(_('Place Name'), self.filter_title)
|
self.add_text_entry(_('Place Name'), self.filter_title)
|
||||||
self.add_text_entry(_('Street'), self.filter_street)
|
self.add_text_entry(_('Street'), self.filter_street)
|
||||||
@@ -98,6 +104,7 @@ class PlaceSidebarFilter(SidebarFilter):
|
|||||||
self.add_text_entry(_('ZIP/Postal code'), self.filter_zip)
|
self.add_text_entry(_('ZIP/Postal code'), self.filter_zip)
|
||||||
self.add_text_entry(_('Church parish'), self.filter_parish)
|
self.add_text_entry(_('Church parish'), self.filter_parish)
|
||||||
self.add_text_entry(_('Note'), self.filter_note)
|
self.add_text_entry(_('Note'), self.filter_note)
|
||||||
|
self.add_entry(_('Tag'), self.tag)
|
||||||
self.add_filter_entry(_('Custom filter'), self.generic)
|
self.add_filter_entry(_('Custom filter'), self.generic)
|
||||||
self.add_regex_entry(self.filter_regex)
|
self.add_regex_entry(self.filter_regex)
|
||||||
|
|
||||||
@@ -113,6 +120,7 @@ class PlaceSidebarFilter(SidebarFilter):
|
|||||||
self.filter_zip.set_text('')
|
self.filter_zip.set_text('')
|
||||||
self.filter_parish.set_text('')
|
self.filter_parish.set_text('')
|
||||||
self.filter_note.set_text('')
|
self.filter_note.set_text('')
|
||||||
|
self.tag.set_active(0)
|
||||||
self.generic.set_active(0)
|
self.generic.set_active(0)
|
||||||
|
|
||||||
def get_filter(self):
|
def get_filter(self):
|
||||||
@@ -128,19 +136,18 @@ class PlaceSidebarFilter(SidebarFilter):
|
|||||||
parish = cuni(self.filter_parish.get_text()).strip()
|
parish = cuni(self.filter_parish.get_text()).strip()
|
||||||
note = cuni(self.filter_note.get_text()).strip()
|
note = cuni(self.filter_note.get_text()).strip()
|
||||||
regex = self.filter_regex.get_active()
|
regex = self.filter_regex.get_active()
|
||||||
|
tag = self.tag.get_active() > 0
|
||||||
gen = self.generic.get_active() > 0
|
gen = self.generic.get_active() > 0
|
||||||
|
|
||||||
empty = not (gid or title or street or locality or city or county or
|
empty = not (gid or title or street or locality or city or county or
|
||||||
state or country or zipc or parish or note or regex or gen)
|
state or country or zipc or parish or note or regex or tag
|
||||||
|
or gen)
|
||||||
if empty:
|
if empty:
|
||||||
generic_filter = None
|
generic_filter = None
|
||||||
else:
|
else:
|
||||||
generic_filter = GenericPlaceFilter()
|
generic_filter = GenericPlaceFilter()
|
||||||
if gid:
|
if gid:
|
||||||
if regex:
|
rule = RegExpIdOf([gid], use_regex=regex)
|
||||||
rule = RegExpIdOf([gid])
|
|
||||||
else:
|
|
||||||
rule = HasIdOf([gid])
|
|
||||||
generic_filter.add_rule(rule)
|
generic_filter.add_rule(rule)
|
||||||
|
|
||||||
rule = HasPlace([title, street, locality, city, county, state,
|
rule = HasPlace([title, street, locality, city, county, state,
|
||||||
@@ -148,10 +155,15 @@ class PlaceSidebarFilter(SidebarFilter):
|
|||||||
generic_filter.add_rule(rule)
|
generic_filter.add_rule(rule)
|
||||||
|
|
||||||
if note:
|
if note:
|
||||||
if regex:
|
rule = HasNoteRegexp([note], use_regex=regex)
|
||||||
rule = HasNoteRegexp([note])
|
generic_filter.add_rule(rule)
|
||||||
else:
|
|
||||||
rule = HasNoteMatchingSubstringOf([note])
|
# check the Tag
|
||||||
|
if tag:
|
||||||
|
model = self.tag.get_model()
|
||||||
|
node = self.tag.get_active_iter()
|
||||||
|
attr = model.get_value(node, 0)
|
||||||
|
rule = HasTag([attr])
|
||||||
generic_filter.add_rule(rule)
|
generic_filter.add_rule(rule)
|
||||||
|
|
||||||
if self.generic.get_active() != 0:
|
if self.generic.get_active() != 0:
|
||||||
@@ -170,3 +182,14 @@ class PlaceSidebarFilter(SidebarFilter):
|
|||||||
all_filter.add_rule(rules.place.AllPlaces([]))
|
all_filter.add_rule(rules.place.AllPlaces([]))
|
||||||
self.generic.set_model(build_filter_model('Place', [all_filter]))
|
self.generic.set_model(build_filter_model('Place', [all_filter]))
|
||||||
self.generic.set_active(0)
|
self.generic.set_active(0)
|
||||||
|
|
||||||
|
def on_tags_changed(self, tag_list):
|
||||||
|
"""
|
||||||
|
Update the list of tags in the tag filter.
|
||||||
|
"""
|
||||||
|
model = Gtk.ListStore(str)
|
||||||
|
model.append(('',))
|
||||||
|
for tag_name in tag_list:
|
||||||
|
model.append((tag_name,))
|
||||||
|
self.tag.set_model(model)
|
||||||
|
self.tag.set_active(0)
|
||||||
|
@@ -46,9 +46,8 @@ from .. import build_filter_model
|
|||||||
from . import SidebarFilter
|
from . import SidebarFilter
|
||||||
from gramps.gen.constfunc import cuni
|
from gramps.gen.constfunc import cuni
|
||||||
from gramps.gen.filters import GenericFilterFactory, rules
|
from gramps.gen.filters import GenericFilterFactory, rules
|
||||||
from gramps.gen.filters.rules.repository import (RegExpIdOf, HasIdOf, HasRepo,
|
from gramps.gen.filters.rules.repository import (RegExpIdOf, HasRepo, HasTag,
|
||||||
HasNoteRegexp, MatchesFilter,
|
HasNoteRegexp, MatchesFilter)
|
||||||
HasNoteMatchingSubstringOf)
|
|
||||||
|
|
||||||
GenericRepoFilter = GenericFilterFactory('Repository')
|
GenericRepoFilter = GenericFilterFactory('Repository')
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
@@ -77,6 +76,7 @@ class RepoSidebarFilter(SidebarFilter):
|
|||||||
|
|
||||||
self.filter_regex = Gtk.CheckButton(_('Use regular expressions'))
|
self.filter_regex = Gtk.CheckButton(_('Use regular expressions'))
|
||||||
|
|
||||||
|
self.tag = Gtk.ComboBox()
|
||||||
self.generic = Gtk.ComboBox()
|
self.generic = Gtk.ComboBox()
|
||||||
|
|
||||||
SidebarFilter.__init__(self, dbstate, uistate, "Repository")
|
SidebarFilter.__init__(self, dbstate, uistate, "Repository")
|
||||||
@@ -89,6 +89,12 @@ class RepoSidebarFilter(SidebarFilter):
|
|||||||
self.generic.add_attribute(cell, 'text', 0)
|
self.generic.add_attribute(cell, 'text', 0)
|
||||||
self.on_filters_changed('Repository')
|
self.on_filters_changed('Repository')
|
||||||
|
|
||||||
|
cell = Gtk.CellRendererText()
|
||||||
|
cell.set_property('width', self._FILTER_WIDTH)
|
||||||
|
cell.set_property('ellipsize', self._FILTER_ELLIPSIZE)
|
||||||
|
self.tag.pack_start(cell, True)
|
||||||
|
self.tag.add_attribute(cell, 'text', 0)
|
||||||
|
|
||||||
self.rtype.get_child().set_width_chars(5)
|
self.rtype.get_child().set_width_chars(5)
|
||||||
|
|
||||||
self.add_text_entry(_('ID'), self.filter_id)
|
self.add_text_entry(_('ID'), self.filter_id)
|
||||||
@@ -97,6 +103,7 @@ class RepoSidebarFilter(SidebarFilter):
|
|||||||
self.add_text_entry(_('Address'), self.filter_address)
|
self.add_text_entry(_('Address'), self.filter_address)
|
||||||
self.add_text_entry(_('URL'), self.filter_url)
|
self.add_text_entry(_('URL'), self.filter_url)
|
||||||
self.add_text_entry(_('Note'), self.filter_note)
|
self.add_text_entry(_('Note'), self.filter_note)
|
||||||
|
self.add_entry(_('Tag'), self.tag)
|
||||||
self.add_filter_entry(_('Custom filter'), self.generic)
|
self.add_filter_entry(_('Custom filter'), self.generic)
|
||||||
self.add_regex_entry(self.filter_regex)
|
self.add_regex_entry(self.filter_regex)
|
||||||
|
|
||||||
@@ -107,6 +114,7 @@ class RepoSidebarFilter(SidebarFilter):
|
|||||||
self.filter_url.set_text('')
|
self.filter_url.set_text('')
|
||||||
self.rtype.get_child().set_text('')
|
self.rtype.get_child().set_text('')
|
||||||
self.filter_note.set_text('')
|
self.filter_note.set_text('')
|
||||||
|
self.tag.set_active(0)
|
||||||
self.generic.set_active(0)
|
self.generic.set_active(0)
|
||||||
|
|
||||||
def get_filter(self):
|
def get_filter(self):
|
||||||
@@ -117,37 +125,40 @@ class RepoSidebarFilter(SidebarFilter):
|
|||||||
rtype = self.repo.get_type().xml_str()
|
rtype = self.repo.get_type().xml_str()
|
||||||
note = cuni(self.filter_note.get_text()).strip()
|
note = cuni(self.filter_note.get_text()).strip()
|
||||||
regex = self.filter_regex.get_active()
|
regex = self.filter_regex.get_active()
|
||||||
|
tag = self.tag.get_active() > 0
|
||||||
gen = self.generic.get_active() > 0
|
gen = self.generic.get_active() > 0
|
||||||
|
|
||||||
empty = not (gid or title or address or url or rtype
|
empty = not (gid or title or address or url or rtype
|
||||||
or note or regex or gen)
|
or note or regex or tag or gen)
|
||||||
if empty:
|
if empty:
|
||||||
generic_filter = None
|
generic_filter = None
|
||||||
else:
|
else:
|
||||||
generic_filter = GenericRepoFilter()
|
generic_filter = GenericRepoFilter()
|
||||||
if gid:
|
if gid:
|
||||||
if regex:
|
rule = RegExpIdOf([gid], use_regex=regex)
|
||||||
rule = RegExpIdOf([gid])
|
|
||||||
else:
|
|
||||||
rule = HasIdOf([gid])
|
|
||||||
generic_filter.add_rule(rule)
|
generic_filter.add_rule(rule)
|
||||||
|
|
||||||
rule = HasRepo([title, rtype, address, url], use_regex=regex)
|
rule = HasRepo([title, rtype, address, url], use_regex=regex)
|
||||||
generic_filter.add_rule(rule)
|
generic_filter.add_rule(rule)
|
||||||
|
|
||||||
if note:
|
if note:
|
||||||
if regex:
|
rule = HasNoteRegexp([note], use_regex=regex)
|
||||||
rule = HasNoteRegexp([note])
|
|
||||||
else:
|
|
||||||
rule = HasNoteMatchingSubstringOf([note])
|
|
||||||
generic_filter.add_rule(rule)
|
generic_filter.add_rule(rule)
|
||||||
|
|
||||||
if self.generic.get_active() != 0:
|
# check the Tag
|
||||||
model = self.generic.get_model()
|
if tag:
|
||||||
node = self.generic.get_active_iter()
|
model = self.tag.get_model()
|
||||||
obj = cuni(model.get_value(node, 0))
|
node = self.tag.get_active_iter()
|
||||||
rule = MatchesFilter([obj])
|
attr = model.get_value(node, 0)
|
||||||
generic_filter.add_rule(rule)
|
rule = HasTag([attr])
|
||||||
|
generic_filter.add_rule(rule)
|
||||||
|
|
||||||
|
if self.generic.get_active() != 0:
|
||||||
|
model = self.generic.get_model()
|
||||||
|
node = self.generic.get_active_iter()
|
||||||
|
obj = cuni(model.get_value(node, 0))
|
||||||
|
rule = MatchesFilter([obj])
|
||||||
|
generic_filter.add_rule(rule)
|
||||||
|
|
||||||
return generic_filter
|
return generic_filter
|
||||||
|
|
||||||
@@ -159,3 +170,14 @@ class RepoSidebarFilter(SidebarFilter):
|
|||||||
self.generic.set_model(build_filter_model('Repository',
|
self.generic.set_model(build_filter_model('Repository',
|
||||||
[all_filter]))
|
[all_filter]))
|
||||||
self.generic.set_active(0)
|
self.generic.set_active(0)
|
||||||
|
|
||||||
|
def on_tags_changed(self, tag_list):
|
||||||
|
"""
|
||||||
|
Update the list of tags in the tag filter.
|
||||||
|
"""
|
||||||
|
model = Gtk.ListStore(str)
|
||||||
|
model.append(('',))
|
||||||
|
for tag_name in tag_list:
|
||||||
|
model.append((tag_name,))
|
||||||
|
self.tag.set_model(model)
|
||||||
|
self.tag.set_active(0)
|
||||||
|
@@ -45,9 +45,8 @@ from .. import build_filter_model
|
|||||||
from . import SidebarFilter
|
from . import SidebarFilter
|
||||||
from gramps.gen.constfunc import cuni
|
from gramps.gen.constfunc import cuni
|
||||||
from gramps.gen.filters import GenericFilterFactory, rules
|
from gramps.gen.filters import GenericFilterFactory, rules
|
||||||
from gramps.gen.filters.rules.source import (RegExpIdOf, HasIdOf, HasSource,
|
from gramps.gen.filters.rules.source import (RegExpIdOf, HasSource, HasTag,
|
||||||
HasNoteMatchingSubstringOf,
|
HasNoteRegexp, MatchesFilter)
|
||||||
HasNoteRegexp, MatchesFilter)
|
|
||||||
|
|
||||||
GenericSourceFilter = GenericFilterFactory('Source')
|
GenericSourceFilter = GenericFilterFactory('Source')
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
@@ -68,6 +67,7 @@ class SourceSidebarFilter(SidebarFilter):
|
|||||||
|
|
||||||
self.filter_regex = Gtk.CheckButton(_('Use regular expressions'))
|
self.filter_regex = Gtk.CheckButton(_('Use regular expressions'))
|
||||||
|
|
||||||
|
self.tag = Gtk.ComboBox()
|
||||||
self.generic = Gtk.ComboBox()
|
self.generic = Gtk.ComboBox()
|
||||||
|
|
||||||
SidebarFilter.__init__(self, dbstate, uistate, "Source")
|
SidebarFilter.__init__(self, dbstate, uistate, "Source")
|
||||||
@@ -80,12 +80,19 @@ class SourceSidebarFilter(SidebarFilter):
|
|||||||
self.generic.add_attribute(cell, 'text', 0)
|
self.generic.add_attribute(cell, 'text', 0)
|
||||||
self.on_filters_changed('Source')
|
self.on_filters_changed('Source')
|
||||||
|
|
||||||
|
cell = Gtk.CellRendererText()
|
||||||
|
cell.set_property('width', self._FILTER_WIDTH)
|
||||||
|
cell.set_property('ellipsize', self._FILTER_ELLIPSIZE)
|
||||||
|
self.tag.pack_start(cell, True)
|
||||||
|
self.tag.add_attribute(cell, 'text', 0)
|
||||||
|
|
||||||
self.add_text_entry(_('ID'), self.filter_id)
|
self.add_text_entry(_('ID'), self.filter_id)
|
||||||
self.add_text_entry(_('Title'), self.filter_title)
|
self.add_text_entry(_('Title'), self.filter_title)
|
||||||
self.add_text_entry(_('Author'), self.filter_author)
|
self.add_text_entry(_('Author'), self.filter_author)
|
||||||
self.add_text_entry(_('Abbreviation'), self.filter_abbr)
|
self.add_text_entry(_('Abbreviation'), self.filter_abbr)
|
||||||
self.add_text_entry(_('Publication'), self.filter_pub)
|
self.add_text_entry(_('Publication'), self.filter_pub)
|
||||||
self.add_text_entry(_('Note'), self.filter_note)
|
self.add_text_entry(_('Note'), self.filter_note)
|
||||||
|
self.add_entry(_('Tag'), self.tag)
|
||||||
self.add_filter_entry(_('Custom filter'), self.generic)
|
self.add_filter_entry(_('Custom filter'), self.generic)
|
||||||
self.add_regex_entry(self.filter_regex)
|
self.add_regex_entry(self.filter_regex)
|
||||||
|
|
||||||
@@ -96,6 +103,7 @@ class SourceSidebarFilter(SidebarFilter):
|
|||||||
self.filter_abbr.set_text('')
|
self.filter_abbr.set_text('')
|
||||||
self.filter_pub.set_text('')
|
self.filter_pub.set_text('')
|
||||||
self.filter_note.set_text('')
|
self.filter_note.set_text('')
|
||||||
|
self.tag.set_active(0)
|
||||||
self.generic.set_active(0)
|
self.generic.set_active(0)
|
||||||
|
|
||||||
def get_filter(self):
|
def get_filter(self):
|
||||||
@@ -106,37 +114,40 @@ class SourceSidebarFilter(SidebarFilter):
|
|||||||
pub = cuni(self.filter_pub.get_text()).strip()
|
pub = cuni(self.filter_pub.get_text()).strip()
|
||||||
note = cuni(self.filter_note.get_text()).strip()
|
note = cuni(self.filter_note.get_text()).strip()
|
||||||
regex = self.filter_regex.get_active()
|
regex = self.filter_regex.get_active()
|
||||||
|
tag = self.tag.get_active() > 0
|
||||||
gen = self.generic.get_active() > 0
|
gen = self.generic.get_active() > 0
|
||||||
|
|
||||||
empty = not (gid or title or author or abbr or pub or note or regex or
|
empty = not (gid or title or author or abbr or pub or note or regex
|
||||||
gen)
|
or tag or gen)
|
||||||
if empty:
|
if empty:
|
||||||
generic_filter = None
|
generic_filter = None
|
||||||
else:
|
else:
|
||||||
generic_filter = GenericSourceFilter()
|
generic_filter = GenericSourceFilter()
|
||||||
if gid:
|
if gid:
|
||||||
if regex:
|
rule = RegExpIdOf([gid], use_regex=regex)
|
||||||
rule = RegExpIdOf([gid])
|
|
||||||
else:
|
|
||||||
rule = HasIdOf([gid])
|
|
||||||
generic_filter.add_rule(rule)
|
generic_filter.add_rule(rule)
|
||||||
|
|
||||||
rule = HasSource([title, author, abbr, pub], use_regex=regex)
|
rule = HasSource([title, author, abbr, pub], use_regex=regex)
|
||||||
generic_filter.add_rule(rule)
|
generic_filter.add_rule(rule)
|
||||||
|
|
||||||
if note:
|
if note:
|
||||||
if regex:
|
rule = HasNoteRegexp([note], use_regex=regex)
|
||||||
rule = HasNoteRegexp([note])
|
|
||||||
else:
|
|
||||||
rule = HasNoteMatchingSubstringOf([note])
|
|
||||||
generic_filter.add_rule(rule)
|
generic_filter.add_rule(rule)
|
||||||
|
|
||||||
if self.generic.get_active() != 0:
|
# check the Tag
|
||||||
model = self.generic.get_model()
|
if tag:
|
||||||
node = self.generic.get_active_iter()
|
model = self.tag.get_model()
|
||||||
obj = cuni(model.get_value(node, 0))
|
node = self.tag.get_active_iter()
|
||||||
rule = MatchesFilter([obj])
|
attr = model.get_value(node, 0)
|
||||||
generic_filter.add_rule(rule)
|
rule = HasTag([attr])
|
||||||
|
generic_filter.add_rule(rule)
|
||||||
|
|
||||||
|
if self.generic.get_active() != 0:
|
||||||
|
model = self.generic.get_model()
|
||||||
|
node = self.generic.get_active_iter()
|
||||||
|
obj = cuni(model.get_value(node, 0))
|
||||||
|
rule = MatchesFilter([obj])
|
||||||
|
generic_filter.add_rule(rule)
|
||||||
|
|
||||||
return generic_filter
|
return generic_filter
|
||||||
|
|
||||||
@@ -147,3 +158,14 @@ class SourceSidebarFilter(SidebarFilter):
|
|||||||
all_filter.add_rule(rules.source.AllSources([]))
|
all_filter.add_rule(rules.source.AllSources([]))
|
||||||
self.generic.set_model(build_filter_model('Source', [all_filter]))
|
self.generic.set_model(build_filter_model('Source', [all_filter]))
|
||||||
self.generic.set_active(0)
|
self.generic.set_active(0)
|
||||||
|
|
||||||
|
def on_tags_changed(self, tag_list):
|
||||||
|
"""
|
||||||
|
Update the list of tags in the tag filter.
|
||||||
|
"""
|
||||||
|
model = Gtk.ListStore(str)
|
||||||
|
model.append(('',))
|
||||||
|
for tag_name in tag_list:
|
||||||
|
model.append((tag_name,))
|
||||||
|
self.tag.set_model(model)
|
||||||
|
self.tag.set_active(0)
|
||||||
|
Reference in New Issue
Block a user