From 2099882e67f68728cd318ef62c74d6b483fb038e Mon Sep 17 00:00:00 2001 From: Nick Hall Date: Wed, 7 Aug 2013 23:25:09 +0000 Subject: [PATCH] 6950: Add new rule for events with places matching filter svn: r22814 --- po/POTFILES.in | 1 + .../Rules/Event/_MatchesPlaceFilter.py | 64 +++++++++++++++++++ src/Filters/Rules/Event/__init__.py | 4 +- src/gui/filtereditor.py | 2 + 4 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 src/Filters/Rules/Event/_MatchesPlaceFilter.py diff --git a/po/POTFILES.in b/po/POTFILES.in index de69998ca..72506582e 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -587,6 +587,7 @@ src/Filters/Rules/Event/_HasSourceCount.py src/Filters/Rules/Event/_HasType.py src/Filters/Rules/Event/_MatchesFilter.py src/Filters/Rules/Event/_MatchesPersonFilter.py +src/Filters/Rules/Event/_MatchesPlaceFilter.py src/Filters/Rules/Event/_MatchesSourceFilter.py src/Filters/Rules/Event/_MatchesSourceConfidence.py src/Filters/Rules/Event/_RegExpIdOf.py diff --git a/src/Filters/Rules/Event/_MatchesPlaceFilter.py b/src/Filters/Rules/Event/_MatchesPlaceFilter.py new file mode 100644 index 000000000..a55aa05e0 --- /dev/null +++ b/src/Filters/Rules/Event/_MatchesPlaceFilter.py @@ -0,0 +1,64 @@ +# +# 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 gen.ggettext import gettext as _ + +#------------------------------------------------------------------------- +# +# Gramps modules +# +#------------------------------------------------------------------------- +from Filters.Rules._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/src/Filters/Rules/Event/__init__.py b/src/Filters/Rules/Event/__init__.py index 0a81c8e9a..fe90c6a6c 100644 --- a/src/Filters/Rules/Event/__init__.py +++ b/src/Filters/Rules/Event/__init__.py @@ -47,6 +47,7 @@ from _MatchesSourceFilter import MatchesSourceFilter from _HasAttribute import HasAttribute from _HasData import HasData from _ChangedSince import ChangedSince +from _MatchesPlaceFilter import MatchesPlaceFilter editor_rule_list = [ AllEvents, @@ -67,5 +68,6 @@ editor_rule_list = [ MatchesSourceFilter, HasAttribute, HasData, - ChangedSince + ChangedSince, + MatchesPlaceFilter ] diff --git a/src/gui/filtereditor.py b/src/gui/filtereditor.py index 8785f3751..9f1c843fd 100644 --- a/src/gui/filtereditor.py +++ b/src/gui/filtereditor.py @@ -532,6 +532,8 @@ class EditRule(ManagedWindow.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:'):