6950: Add new rule for events with places matching filter

svn: r22814
This commit is contained in:
Nick Hall 2013-08-07 23:25:09 +00:00
parent 18ba120115
commit 2099882e67
4 changed files with 70 additions and 1 deletions

View File

@ -587,6 +587,7 @@ src/Filters/Rules/Event/_HasSourceCount.py
src/Filters/Rules/Event/_HasType.py src/Filters/Rules/Event/_HasType.py
src/Filters/Rules/Event/_MatchesFilter.py src/Filters/Rules/Event/_MatchesFilter.py
src/Filters/Rules/Event/_MatchesPersonFilter.py src/Filters/Rules/Event/_MatchesPersonFilter.py
src/Filters/Rules/Event/_MatchesPlaceFilter.py
src/Filters/Rules/Event/_MatchesSourceFilter.py src/Filters/Rules/Event/_MatchesSourceFilter.py
src/Filters/Rules/Event/_MatchesSourceConfidence.py src/Filters/Rules/Event/_MatchesSourceConfidence.py
src/Filters/Rules/Event/_RegExpIdOf.py src/Filters/Rules/Event/_RegExpIdOf.py

View File

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

@ -47,6 +47,7 @@ from _MatchesSourceFilter import MatchesSourceFilter
from _HasAttribute import HasAttribute from _HasAttribute import HasAttribute
from _HasData import HasData from _HasData import HasData
from _ChangedSince import ChangedSince from _ChangedSince import ChangedSince
from _MatchesPlaceFilter import MatchesPlaceFilter
editor_rule_list = [ editor_rule_list = [
AllEvents, AllEvents,
@ -67,5 +68,6 @@ editor_rule_list = [
MatchesSourceFilter, MatchesSourceFilter,
HasAttribute, HasAttribute,
HasData, HasData,
ChangedSince ChangedSince,
MatchesPlaceFilter
] ]

View File

@ -532,6 +532,8 @@ class EditRule(ManagedWindow.ManagedWindow):
t = MyFilters(self.filterdb.get_filters('Source')) t = MyFilters(self.filterdb.get_filters('Source'))
elif v == _('Repository filter name:'): elif v == _('Repository filter name:'):
t = MyFilters(self.filterdb.get_filters('Repository')) t = MyFilters(self.filterdb.get_filters('Repository'))
elif v == _('Place filter name:'):
t = MyFilters(self.filterdb.get_filters('Place'))
elif v in _name2typeclass: elif v in _name2typeclass:
t = MySelect(_name2typeclass[v]) t = MySelect(_name2typeclass[v])
elif v == _('Inclusive:'): elif v == _('Inclusive:'):