6950: Add new rule for events with places matching filter

svn: r22816
This commit is contained in:
Nick Hall 2013-08-07 23:26:16 +00:00
parent 4b5d6fa8c9
commit fe258bf600
4 changed files with 71 additions and 1 deletions

View File

@ -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
]

View File

@ -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 <place filter>')
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

View File

@ -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:'):

View File

@ -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