diff --git a/gramps/gen/filters/rules/_hasnotetypebase.py b/gramps/gen/filters/rules/_hasnotetypebase.py new file mode 100644 index 00000000000..18a77f006d7 --- /dev/null +++ b/gramps/gen/filters/rules/_hasnotetypebase.py @@ -0,0 +1,75 @@ +# +# 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# + +""" +Rule that checks for a note of a particular type. +""" + +# ------------------------------------------------------------------------- +# +# Gramps modules +# +# ------------------------------------------------------------------------- +from ...const import GRAMPS_LOCALE as glocale +from ...lib.notetype import NoteType +from . import Rule + +_ = glocale.translation.gettext + + +# ------------------------------------------------------------------------- +# +# HasType +# +# ------------------------------------------------------------------------- +class HasNoteTypeBase(Rule): + """ + Objects having note of particular type. + """ + + labels = [_("Note type:")] + name = _("Objects with notes with the particular type") + description = _("Matches notes with the particular type ") + category = _("General filters") + + def __init__(self, arg, use_regex=False, use_case=False): + super().__init__(arg, use_regex, use_case) + self.note_type = None + + def prepare(self, db, user): + """ + Prepare the rule. Things we only want to do once. + """ + if self.list[0]: + self.note_type = NoteType() + self.note_type.set_from_xml_str(self.list[0]) + + def apply(self, db, obj): + """ + Apply the rule. Return True on a match. + """ + notelist = obj.get_note_list() + for notehandle in notelist: + note = db.get_note_from_handle(notehandle) + if note.get_type() == self.note_type: + return True + return False + + diff --git a/gramps/gen/filters/rules/citation/__init__.py b/gramps/gen/filters/rules/citation/__init__.py index 228847ea31f..ed212994e41 100644 --- a/gramps/gen/filters/rules/citation/__init__.py +++ b/gramps/gen/filters/rules/citation/__init__.py @@ -34,6 +34,7 @@ from ._hasnote import HasNote from ._hasnotematchingsubstringof import HasNoteMatchingSubstringOf from ._hasnoteregexp import HasNoteRegexp +from ._hasnotetype import HasNoteType from ._hasreferencecountof import HasReferenceCountOf from ._hassource import HasSource from ._hassourceidof import HasSourceIdOf @@ -56,6 +57,7 @@ HasIdOf, HasNote, HasNoteRegexp, + HasNoteType, HasReferenceCountOf, HasSource, HasSourceIdOf, diff --git a/gramps/gen/filters/rules/citation/_hasnotetype.py b/gramps/gen/filters/rules/citation/_hasnotetype.py new file mode 100644 index 00000000000..f8b5dd54abf --- /dev/null +++ b/gramps/gen/filters/rules/citation/_hasnotetype.py @@ -0,0 +1,50 @@ +# +# Gramps - a GTK+/GNOME based genealogy program +# +# Copyright (C) 2002-2007 Donald N. Allingham +# Copyright (C) 2007-2008 Brian G. Matherly +# Copyright (C) 2008 Jerome Rapinat +# Copyright (C) 2008 Benny Malengier +# Copyright (C) 2011 Tim G L Lyons +# +# 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# + +# ------------------------------------------------------------------------- +# +# Standard Python modules +# +# ------------------------------------------------------------------------- +from ....const import GRAMPS_LOCALE as glocale + +_ = glocale.translation.gettext + +# ------------------------------------------------------------------------- +# +# Gramps modules +# +# ------------------------------------------------------------------------- +from .._hasnotetypebase import HasNoteTypeBase + + +# ------------------------------------------------------------------------- +# "Sources having notes" +# ------------------------------------------------------------------------- +class HasNoteType(HasNoteTypeBase): + """Citations having note of particular type""" + + name = _("Citations having note of particular type") + description = _("Matches citations having note of the particular type") + category = _("Note filters") \ No newline at end of file diff --git a/gramps/gen/filters/rules/event/__init__.py b/gramps/gen/filters/rules/event/__init__.py index 5f7bec29e09..cba17446ecc 100644 --- a/gramps/gen/filters/rules/event/__init__.py +++ b/gramps/gen/filters/rules/event/__init__.py @@ -35,6 +35,7 @@ from ._hasnote import HasNote from ._hasnoteregexp import HasNoteRegexp from ._hasnotematchingsubstringof import HasNoteMatchingSubstringOf +from ._hasnotetype import HasNoteType from ._hasreferencecountof import HasReferenceCountOf from ._hassourcecount import HasSourceCount from ._eventprivate import EventPrivate @@ -58,6 +59,7 @@ HasCitation, HasNote, HasNoteRegexp, + HasNoteType, HasReferenceCountOf, HasSourceCount, EventPrivate, diff --git a/gramps/gen/filters/rules/event/_hasnotetype.py b/gramps/gen/filters/rules/event/_hasnotetype.py new file mode 100644 index 00000000000..89d58c2f475 --- /dev/null +++ b/gramps/gen/filters/rules/event/_hasnotetype.py @@ -0,0 +1,50 @@ +# +# Gramps - a GTK+/GNOME based genealogy program +# +# Copyright (C) 2002-2007 Donald N. Allingham +# Copyright (C) 2007-2008 Brian G. Matherly +# Copyright (C) 2008 Jerome Rapinat +# Copyright (C) 2008 Benny Malengier +# Copyright (C) 2011 Tim G L Lyons +# +# 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# + +# ------------------------------------------------------------------------- +# +# Standard Python modules +# +# ------------------------------------------------------------------------- +from ....const import GRAMPS_LOCALE as glocale + +_ = glocale.translation.gettext + +# ------------------------------------------------------------------------- +# +# Gramps modules +# +# ------------------------------------------------------------------------- +from .._hasnotetypebase import HasNoteTypeBase + + +# ------------------------------------------------------------------------- +# "Sources having notes" +# ------------------------------------------------------------------------- +class HasNoteType(HasNoteTypeBase): + """Citations having note of particular type""" + + name = _("Events having note of particular type") + description = _("Matches events having note of the particular type") + category = _("Note filters") diff --git a/gramps/gen/filters/rules/family/__init__.py b/gramps/gen/filters/rules/family/__init__.py index f5a246b84ed..bae4ed64199 100644 --- a/gramps/gen/filters/rules/family/__init__.py +++ b/gramps/gen/filters/rules/family/__init__.py @@ -40,6 +40,7 @@ from ._hasnote import HasNote from ._hasnoteregexp import HasNoteRegexp from ._hasnotematchingsubstringof import HasNoteMatchingSubstringOf +from ._hasnotetype import HasNoteType from ._hassourcecount import HasSourceCount from ._hassourceof import HasSourceOf from ._hasreferencecountof import HasReferenceCountOf @@ -69,6 +70,7 @@ HasIdOf, HasLDS, HasNote, + HasNoteType, RegExpIdOf, HasNoteRegexp, HasReferenceCountOf, diff --git a/gramps/gen/filters/rules/family/_hasnotetype.py b/gramps/gen/filters/rules/family/_hasnotetype.py new file mode 100644 index 00000000000..afdd88c53b2 --- /dev/null +++ b/gramps/gen/filters/rules/family/_hasnotetype.py @@ -0,0 +1,50 @@ +# +# Gramps - a GTK+/GNOME based genealogy program +# +# Copyright (C) 2002-2007 Donald N. Allingham +# Copyright (C) 2007-2008 Brian G. Matherly +# Copyright (C) 2008 Jerome Rapinat +# Copyright (C) 2008 Benny Malengier +# Copyright (C) 2011 Tim G L Lyons +# +# 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# + +# ------------------------------------------------------------------------- +# +# Standard Python modules +# +# ------------------------------------------------------------------------- +from ....const import GRAMPS_LOCALE as glocale + +_ = glocale.translation.gettext + +# ------------------------------------------------------------------------- +# +# Gramps modules +# +# ------------------------------------------------------------------------- +from .._hasnotetypebase import HasNoteTypeBase + + +# ------------------------------------------------------------------------- +# "Sources having notes" +# ------------------------------------------------------------------------- +class HasNoteType(HasNoteTypeBase): + """Citations having note of particular type""" + + name = _("Families having note of particular type") + description = _("Matches families having note of the particular type") + category = _("Note filters") diff --git a/gramps/gen/filters/rules/person/__init__.py b/gramps/gen/filters/rules/person/__init__.py index 8f993d8b65b..b8b86bcc27c 100644 --- a/gramps/gen/filters/rules/person/__init__.py +++ b/gramps/gen/filters/rules/person/__init__.py @@ -51,6 +51,7 @@ from ._hasnote import HasNote from ._hasnotematchingsubstringof import HasNoteMatchingSubstringOf from ._hasnoteregexp import HasNoteRegexp +from ._hasnotetype import HasNoteType from ._hasothergender import HasOtherGender from ._hasrelationship import HasRelationship from ._hassourcecount import HasSourceCount @@ -187,6 +188,7 @@ RelationshipPathBetweenBookmarks, HasTextMatchingSubstringOf, HasNote, + HasNoteType, HasNoteRegexp, RegExpIdOf, RegExpName, diff --git a/gramps/gen/filters/rules/person/_hasnotetype.py b/gramps/gen/filters/rules/person/_hasnotetype.py new file mode 100644 index 00000000000..f7445006131 --- /dev/null +++ b/gramps/gen/filters/rules/person/_hasnotetype.py @@ -0,0 +1,50 @@ +# +# Gramps - a GTK+/GNOME based genealogy program +# +# Copyright (C) 2002-2007 Donald N. Allingham +# Copyright (C) 2007-2008 Brian G. Matherly +# Copyright (C) 2008 Jerome Rapinat +# Copyright (C) 2008 Benny Malengier +# Copyright (C) 2011 Tim G L Lyons +# +# 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# + +# ------------------------------------------------------------------------- +# +# Standard Python modules +# +# ------------------------------------------------------------------------- +from ....const import GRAMPS_LOCALE as glocale + +_ = glocale.translation.gettext + +# ------------------------------------------------------------------------- +# +# Gramps modules +# +# ------------------------------------------------------------------------- +from .._hasnotetypebase import HasNoteTypeBase + + +# ------------------------------------------------------------------------- +# "Sources having notes" +# ------------------------------------------------------------------------- +class HasNoteType(HasNoteTypeBase): + """Persons having note of particular type""" + + name = _("Persons having note of particular type") + description = _("Matches persons having note of the particular type") + category = _("Note filters") diff --git a/gramps/gen/filters/rules/place/__init__.py b/gramps/gen/filters/rules/place/__init__.py index 73d406f6c19..c7b16bdeb8d 100644 --- a/gramps/gen/filters/rules/place/__init__.py +++ b/gramps/gen/filters/rules/place/__init__.py @@ -32,6 +32,7 @@ from ._hasnote import HasNote from ._hasnoteregexp import HasNoteRegexp from ._hasnotematchingsubstringof import HasNoteMatchingSubstringOf +from ._hasnotetype import HasNoteType from ._hasreferencecountof import HasReferenceCountOf from ._hassourcecount import HasSourceCount from ._hassourceof import HasSourceOf @@ -57,6 +58,7 @@ RegExpIdOf, HasNote, HasNoteRegexp, + HasNoteType, HasReferenceCountOf, HasSourceCount, HasSourceOf, diff --git a/gramps/gen/filters/rules/place/_hasnotetype.py b/gramps/gen/filters/rules/place/_hasnotetype.py new file mode 100644 index 00000000000..85e87a81bd6 --- /dev/null +++ b/gramps/gen/filters/rules/place/_hasnotetype.py @@ -0,0 +1,50 @@ +# +# Gramps - a GTK+/GNOME based genealogy program +# +# Copyright (C) 2002-2007 Donald N. Allingham +# Copyright (C) 2007-2008 Brian G. Matherly +# Copyright (C) 2008 Jerome Rapinat +# Copyright (C) 2008 Benny Malengier +# Copyright (C) 2011 Tim G L Lyons +# +# 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# + +# ------------------------------------------------------------------------- +# +# Standard Python modules +# +# ------------------------------------------------------------------------- +from ....const import GRAMPS_LOCALE as glocale + +_ = glocale.translation.gettext + +# ------------------------------------------------------------------------- +# +# Gramps modules +# +# ------------------------------------------------------------------------- +from .._hasnotetypebase import HasNoteTypeBase + + +# ------------------------------------------------------------------------- +# "Sources having notes" +# ------------------------------------------------------------------------- +class HasNoteType(HasNoteTypeBase): + """Citations having note of particular type""" + + name = _("Places having note of particular type") + description = _("Places citations having note of the particular type") + category = _("Note filters") diff --git a/gramps/gen/filters/rules/source/__init__.py b/gramps/gen/filters/rules/source/__init__.py index 27df1c6ecb0..68c47caffa8 100644 --- a/gramps/gen/filters/rules/source/__init__.py +++ b/gramps/gen/filters/rules/source/__init__.py @@ -34,6 +34,7 @@ from ._hasnote import HasNote from ._hasnoteregexp import HasNoteRegexp from ._hasnotematchingsubstringof import HasNoteMatchingSubstringOf +from ._hasnotetype import HasNoteType from ._hasreferencecountof import HasReferenceCountOf from ._sourceprivate import SourcePrivate from ._matchesfilter import MatchesFilter @@ -52,6 +53,7 @@ RegExpIdOf, HasNote, HasNoteRegexp, + HasNoteType, HasReferenceCountOf, SourcePrivate, MatchesFilter, diff --git a/gramps/gen/filters/rules/source/_hasnotetype.py b/gramps/gen/filters/rules/source/_hasnotetype.py new file mode 100644 index 00000000000..a4fd713826c --- /dev/null +++ b/gramps/gen/filters/rules/source/_hasnotetype.py @@ -0,0 +1,50 @@ +# +# Gramps - a GTK+/GNOME based genealogy program +# +# Copyright (C) 2002-2007 Donald N. Allingham +# Copyright (C) 2007-2008 Brian G. Matherly +# Copyright (C) 2008 Jerome Rapinat +# Copyright (C) 2008 Benny Malengier +# Copyright (C) 2011 Tim G L Lyons +# +# 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# + +# ------------------------------------------------------------------------- +# +# Standard Python modules +# +# ------------------------------------------------------------------------- +from ....const import GRAMPS_LOCALE as glocale + +_ = glocale.translation.gettext + +# ------------------------------------------------------------------------- +# +# Gramps modules +# +# ------------------------------------------------------------------------- +from .._hasnotetypebase import HasNoteTypeBase + + +# ------------------------------------------------------------------------- +# "Sources having notes" +# ------------------------------------------------------------------------- +class HasNoteType(HasNoteTypeBase): + """Citations having note of particular type""" + + name = _("Sources having note of particular type") + description = _("Matches souces having note of the particular type") + category = _("Note filters")