From 72c2cff7903fa8cb985badfed77aa33287c97d13 Mon Sep 17 00:00:00 2001 From: Nick Hall Date: Thu, 22 Aug 2013 17:13:55 +0000 Subject: [PATCH] Add date validation to filters svn: r22905 --- gramps/gui/editors/filtereditor.py | 3 + .../filters/sidebar/_citationsidebarfilter.py | 4 +- .../filters/sidebar/_eventsidebarfilter.py | 2 +- .../filters/sidebar/_mediasidebarfilter.py | 2 +- .../filters/sidebar/_personsidebarfilter.py | 4 +- gramps/gui/widgets/__init__.py | 1 + gramps/gui/widgets/dateentry.py | 75 +++++++++++++++++++ po/POTFILES.skip | 1 + 8 files changed, 86 insertions(+), 6 deletions(-) create mode 100644 gramps/gui/widgets/dateentry.py diff --git a/gramps/gui/editors/filtereditor.py b/gramps/gui/editors/filtereditor.py index ceb7b978c..e5ab9f838 100644 --- a/gramps/gui/editors/filtereditor.py +++ b/gramps/gui/editors/filtereditor.py @@ -72,6 +72,7 @@ from gramps.gen.display.name import displayer as _nd from gramps.gen.utils.db import family_name from gramps.gen.utils.string import confidence from gramps.gen.constfunc import cuni +from ..widgets import DateEntry #------------------------------------------------------------------------- # @@ -553,6 +554,8 @@ class EditRule(ManagedWindow): elif v == _('Confidence level:'): t = MyList(list(map(str, list(range(5)))), [confidence[i] for i in range(5)]) + elif v == _('Date:'): + t = DateEntry(self.uistate, self.track) else: t = MyEntry() tlist.append(t) diff --git a/gramps/gui/filters/sidebar/_citationsidebarfilter.py b/gramps/gui/filters/sidebar/_citationsidebarfilter.py index 2ef0be1ff..bf5db0ffc 100644 --- a/gramps/gui/filters/sidebar/_citationsidebarfilter.py +++ b/gramps/gui/filters/sidebar/_citationsidebarfilter.py @@ -41,7 +41,7 @@ from gi.repository import Gtk # GRAMPS modules # #------------------------------------------------------------------------- -from ...widgets import MonitoredMenu +from ...widgets import MonitoredMenu, DateEntry from gramps.gen.lib import Citation from .. import build_filter_model from . import SidebarFilter @@ -63,7 +63,7 @@ class CitationSidebarFilter(SidebarFilter): self.clicked_func = clicked self.filter_id = Gtk.Entry() self.filter_page = Gtk.Entry() - self.filter_date = Gtk.Entry() + self.filter_date = DateEntry(uistate, []) self.filter_conf = Gtk.ComboBox() model = Gtk.ListStore(str) diff --git a/gramps/gui/filters/sidebar/_eventsidebarfilter.py b/gramps/gui/filters/sidebar/_eventsidebarfilter.py index 110ea0419..5f41b083c 100644 --- a/gramps/gui/filters/sidebar/_eventsidebarfilter.py +++ b/gramps/gui/filters/sidebar/_eventsidebarfilter.py @@ -72,7 +72,7 @@ class EventSidebarFilter(SidebarFilter): self.filter_event.get_type) self.filter_mainparts = widgets.BasicEntry() - self.filter_date = widgets.BasicEntry() + self.filter_date = widgets.DateEntry(uistate, []) self.filter_place = widgets.BasicEntry() self.filter_note = widgets.BasicEntry() diff --git a/gramps/gui/filters/sidebar/_mediasidebarfilter.py b/gramps/gui/filters/sidebar/_mediasidebarfilter.py index 783cec0cd..a10717e2c 100644 --- a/gramps/gui/filters/sidebar/_mediasidebarfilter.py +++ b/gramps/gui/filters/sidebar/_mediasidebarfilter.py @@ -64,7 +64,7 @@ class MediaSidebarFilter(SidebarFilter): self.filter_title = widgets.BasicEntry() self.filter_type = widgets.BasicEntry() self.filter_path = widgets.BasicEntry() - self.filter_date = widgets.BasicEntry() + self.filter_date = widgets.DateEntry(uistate, []) self.filter_note = widgets.BasicEntry() self.filter_regex = Gtk.CheckButton(_('Use regular expressions')) diff --git a/gramps/gui/filters/sidebar/_personsidebarfilter.py b/gramps/gui/filters/sidebar/_personsidebarfilter.py index a8d824145..7d994e8ee 100644 --- a/gramps/gui/filters/sidebar/_personsidebarfilter.py +++ b/gramps/gui/filters/sidebar/_personsidebarfilter.py @@ -76,8 +76,8 @@ class PersonSidebarFilter(SidebarFilter): self.clicked_func = clicked self.filter_name = widgets.BasicEntry() self.filter_id = widgets.BasicEntry() - self.filter_birth = widgets.BasicEntry() - self.filter_death = widgets.BasicEntry() + self.filter_birth = widgets.DateEntry(uistate, []) + self.filter_death = widgets.DateEntry(uistate, []) self.filter_event = Event() self.filter_event.set_type((EventType.CUSTOM, '')) self.etype = Gtk.ComboBox(has_entry=True) diff --git a/gramps/gui/widgets/__init__.py b/gramps/gui/widgets/__init__.py index 4690aab78..6ffd47ab9 100644 --- a/gramps/gui/widgets/__init__.py +++ b/gramps/gui/widgets/__init__.py @@ -25,6 +25,7 @@ from .basicentry import * from .buttons import * +from .dateentry import * from .expandcollapsearrow import * from .labels import * from .linkbox import * diff --git a/gramps/gui/widgets/dateentry.py b/gramps/gui/widgets/dateentry.py new file mode 100644 index 000000000..49bbea328 --- /dev/null +++ b/gramps/gui/widgets/dateentry.py @@ -0,0 +1,75 @@ +# +# Gramps - a GTK+/GNOME based genealogy program +# +# Copyright (C) 2013 Nick Hall +# +# 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$ + +__all__ = ["DateEntry"] + +#------------------------------------------------------------------------- +# +# Standard python modules +# +#------------------------------------------------------------------------- +import logging +_LOG = logging.getLogger(".widgets.dateentry") + +#------------------------------------------------------------------------- +# +# GTK/Gnome modules +# +#------------------------------------------------------------------------- +from gi.repository import Gtk + +#------------------------------------------------------------------------- +# +# Gramps modules +# +#------------------------------------------------------------------------- +from .monitoredwidgets import MonitoredDate +from .validatedmaskedentry import ValidatableMaskedEntry +from gramps.gen.lib.date import Date + +#------------------------------------------------------------------------- +# +# DateEntry class +# +#------------------------------------------------------------------------- +class DateEntry(Gtk.HBox): + + def __init__(self, uistate, track): + Gtk.HBox.__init__(self) + self.entry = ValidatableMaskedEntry() + self.pack_start(self.entry, True, True, 0) + image = Gtk.Image() + image.set_from_stock('gramps-date-edit', Gtk.IconSize.BUTTON) + button = Gtk.Button() + button.set_image(image) + button.set_relief(Gtk.ReliefStyle.NORMAL) + self.pack_start(button, False, True, 0) + self.date = Date() + self.date_entry = MonitoredDate(self.entry, button, self.date, + uistate, track) + self.show_all() + + def get_text(self): + return self.entry.get_text() + + def set_text(self, text): + self.entry.set_text(text) diff --git a/po/POTFILES.skip b/po/POTFILES.skip index e7deae73c..cb47dda4b 100644 --- a/po/POTFILES.skip +++ b/po/POTFILES.skip @@ -367,6 +367,7 @@ gramps/gui/views/treemodels/sourcemodel.py # gramps/gui/widgets/__init__.py gramps/gui/widgets/basicentry.py +gramps/gui/widgets/dateentry.py gramps/gui/widgets/fanchartdesc.py gramps/gui/widgets/linkbox.py gramps/gui/widgets/menuitem.py