Implement filter by street in place filters

svn: r10898
This commit is contained in:
Gary Burton 2008-07-21 20:39:19 +00:00
parent 36e115d473
commit 365f78ac5f
2 changed files with 21 additions and 11 deletions

View File

@ -2,6 +2,7 @@
# Gramps - a GTK+/GNOME based genealogy program # Gramps - a GTK+/GNOME based genealogy program
# #
# Copyright (C) 2002-2006 Donald N. Allingham # Copyright (C) 2002-2006 Donald N. Allingham
# Copyright (C) 2008 Gary Burton
# #
# This program is free software; you can redistribute it and/or modify # 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 # it under the terms of the GNU General Public License as published by
@ -44,6 +45,7 @@ class HasPlace(Rule):
labels = [ _('Name:'), labels = [ _('Name:'),
_('Street:'),
_('Church Parish:'), _('Church Parish:'),
_('ZIP/Postal Code:'), _('ZIP/Postal Code:'),
_('City:'), _('City:'),
@ -55,8 +57,8 @@ class HasPlace(Rule):
description = _("Matches places with particular parameters") description = _("Matches places with particular parameters")
category = _('General filters') category = _('General filters')
def apply(self,db,place): def apply(self, db, place):
if not self.match_substring(0,place.get_title()): if not self.match_substring(0, place.get_title()):
return False return False
# If no location data was given then we're done: match # If no location data was given then we're done: match
@ -71,27 +73,30 @@ class HasPlace(Rule):
# Nothing matched # Nothing matched
return False return False
def apply_location(self,loc): def apply_location(self, loc):
# Empty locaiton does not match anything # Empty locaiton does not match anything
if not loc: if not loc:
return False return False
if not self.match_substring(1,loc.get_parish()): if not self.match_substring(1, loc.get_street()):
return False return False
if not self.match_substring(2,loc.get_postal_code()): if not self.match_substring(2, loc.get_parish()):
return False return False
if not self.match_substring(3,loc.get_city()): if not self.match_substring(3, loc.get_postal_code()):
return False return False
if not self.match_substring(4,loc.get_county()): if not self.match_substring(4, loc.get_city()):
return False return False
if not self.match_substring(5,loc.get_state()): if not self.match_substring(5, loc.get_county()):
return False return False
if not self.match_substring(6,loc.get_country()): if not self.match_substring(6, loc.get_state()):
return False
if not self.match_substring(7, loc.get_country()):
return False return False
# Nothing contradicted, so we're matching this location # Nothing contradicted, so we're matching this location

View File

@ -2,6 +2,7 @@
# Gramps - a GTK+/GNOME based genealogy program # Gramps - a GTK+/GNOME based genealogy program
# #
# Copyright (C) 2002-2006 Donald N. Allingham # Copyright (C) 2002-2006 Donald N. Allingham
# Copyright (C) 2008 Gary Burton
# #
# This program is free software; you can redistribute it and/or modify # 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 # it under the terms of the GNU General Public License as published by
@ -58,6 +59,7 @@ class PlaceSidebarFilter(SidebarFilter):
self.filter_id = gtk.Entry() self.filter_id = gtk.Entry()
self.filter_title = gtk.Entry() self.filter_title = gtk.Entry()
self.filter_street = gtk.Entry()
self.filter_parish = gtk.Entry() self.filter_parish = gtk.Entry()
self.filter_zip = gtk.Entry() self.filter_zip = gtk.Entry()
self.filter_city = gtk.Entry() self.filter_city = gtk.Entry()
@ -80,6 +82,7 @@ class PlaceSidebarFilter(SidebarFilter):
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(_('Church parish'), self.filter_parish) self.add_text_entry(_('Church parish'), self.filter_parish)
self.add_text_entry(_('Zip/Postal code'), self.filter_zip) self.add_text_entry(_('Zip/Postal code'), self.filter_zip)
self.add_text_entry(_('City'), self.filter_city) self.add_text_entry(_('City'), self.filter_city)
@ -93,6 +96,7 @@ class PlaceSidebarFilter(SidebarFilter):
def clear(self, obj): def clear(self, obj):
self.filter_id.set_text('') self.filter_id.set_text('')
self.filter_title.set_text('') self.filter_title.set_text('')
self.filter_street.set_text('')
self.filter_parish.set_text('') self.filter_parish.set_text('')
self.filter_zip.set_text('') self.filter_zip.set_text('')
self.filter_city.set_text('') self.filter_city.set_text('')
@ -105,6 +109,7 @@ class PlaceSidebarFilter(SidebarFilter):
def get_filter(self): def get_filter(self):
gid = unicode(self.filter_id.get_text()).strip() gid = unicode(self.filter_id.get_text()).strip()
title = unicode(self.filter_title.get_text()).strip() title = unicode(self.filter_title.get_text()).strip()
street = unicode(self.filter_street.get_text()).strip()
parish = unicode(self.filter_parish.get_text()).strip() parish = unicode(self.filter_parish.get_text()).strip()
zipc = unicode(self.filter_zip.get_text()).strip() zipc = unicode(self.filter_zip.get_text()).strip()
city = unicode(self.filter_city.get_text()).strip() city = unicode(self.filter_city.get_text()).strip()
@ -115,7 +120,7 @@ class PlaceSidebarFilter(SidebarFilter):
regex = self.filter_regex.get_active() regex = self.filter_regex.get_active()
gen = self.generic.get_active() > 0 gen = self.generic.get_active() > 0
empty = not (gid or title or parish or zipc or city or county empty = not (gid or title or street or parish or zipc or city or county
or state or country or note or regex or gen) or state or country or note or regex or gen)
if empty: if empty:
generic_filter = None generic_filter = None
@ -128,7 +133,7 @@ class PlaceSidebarFilter(SidebarFilter):
rule = HasIdOf([gid]) rule = HasIdOf([gid])
generic_filter.add_rule(rule) generic_filter.add_rule(rule)
rule = HasPlace([title, parish, zipc, city, county, state, country]) rule = HasPlace([title, street, parish, zipc, city, county, state, country])
generic_filter.add_rule(rule) generic_filter.add_rule(rule)
if note: if note: