From fe258bf600489ca64e1809759c284f9a5843f69d Mon Sep 17 00:00:00 2001 From: Nick Hall Date: Wed, 7 Aug 2013 23:26:16 +0000 Subject: [PATCH] 6950: Add new rule for events with places matching filter svn: r22816 --- gramps/gen/filters/rules/event/__init__.py | 4 +- .../rules/event/_matchesplacefilter.py | 65 +++++++++++++++++++ gramps/gui/editors/filtereditor.py | 2 + po/POTFILES.in | 1 + 4 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 gramps/gen/filters/rules/event/_matchesplacefilter.py diff --git a/gramps/gen/filters/rules/event/__init__.py b/gramps/gen/filters/rules/event/__init__.py index 16100b4cc..e2a594409 100644 --- a/gramps/gen/filters/rules/event/__init__.py +++ b/gramps/gen/filters/rules/event/__init__.py @@ -48,6 +48,7 @@ from ._hasattribute import HasAttribute from ._hasdata import HasData from ._changedsince import ChangedSince from ._hastag import HasTag +from ._matchesplacefilter import MatchesPlaceFilter editor_rule_list = [ AllEvents, @@ -69,5 +70,6 @@ editor_rule_list = [ HasAttribute, HasData, ChangedSince, - HasTag + HasTag, + MatchesPlaceFilter ] diff --git a/gramps/gen/filters/rules/event/_matchesplacefilter.py b/gramps/gen/filters/rules/event/_matchesplacefilter.py new file mode 100644 index 000000000..c771eb852 --- /dev/null +++ b/gramps/gen/filters/rules/event/_matchesplacefilter.py @@ -0,0 +1,65 @@ +# +# Gramps - a GTK+/GNOME based genealogy program +# +# Copyright (C) 2002-2006 Donald N. Allingham +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# + +# $Id$ + +#------------------------------------------------------------------------- +# +# Standard Python modules +# +#------------------------------------------------------------------------- +from ....const import GRAMPS_LOCALE as glocale +_ = glocale.translation.gettext + +#------------------------------------------------------------------------- +# +# Gramps modules +# +#------------------------------------------------------------------------- +from .._matchesfilterbase import MatchesFilterBase + +#------------------------------------------------------------------------- +# +# MatchesFilter +# +#------------------------------------------------------------------------- +class MatchesPlaceFilter(MatchesFilterBase): + """ + Rule that checks against another filter. + + This is a base rule for subclassing by specific objects. + Subclasses need to define the namespace class attribute. + """ + + labels = [_('Place filter name:')] + name = _('Events of places matching the ') + description = _("Matches events that occurred at places that match the " + "specified place filter name") + category = _('General filters') + # we want to have this filter show place filters + namespace = 'Place' + + def apply(self, db, event): + filt = self.find_filter() + if filt: + handle = event.get_place_handle() + if handle and filt.check(db, handle): + return True + return False diff --git a/gramps/gui/editors/filtereditor.py b/gramps/gui/editors/filtereditor.py index 5f513771a..ceb7b978c 100644 --- a/gramps/gui/editors/filtereditor.py +++ b/gramps/gui/editors/filtereditor.py @@ -533,6 +533,8 @@ class EditRule(ManagedWindow): t = MyFilters(self.filterdb.get_filters('Source')) elif v == _('Repository filter name:'): t = MyFilters(self.filterdb.get_filters('Repository')) + elif v == _('Place filter name:'): + t = MyFilters(self.filterdb.get_filters('Place')) elif v in _name2typeclass: t = MySelect(_name2typeclass[v]) elif v == _('Inclusive:'): diff --git a/po/POTFILES.in b/po/POTFILES.in index 88518d7a9..3abde6112 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -73,6 +73,7 @@ gramps/gen/filters/rules/event/_hassourcecount.py gramps/gen/filters/rules/event/_hastype.py gramps/gen/filters/rules/event/_matchesfilter.py gramps/gen/filters/rules/event/_matchespersonfilter.py +gramps/gen/filters/rules/event/_matchesplacefilter.py gramps/gen/filters/rules/event/_matchessourceconfidence.py gramps/gen/filters/rules/event/_matchessourcefilter.py gramps/gen/filters/rules/event/_regexpidof.py