From 537b3d7af8582f3aefaa75fe4bee3c2022765d24 Mon Sep 17 00:00:00 2001 From: Nick Hall Date: Thu, 22 Aug 2013 17:12:27 +0000 Subject: [PATCH] Add date validation to filters svn: r22903 --- po/POTFILES.skip | 1 + src/Filters/SideBar/_CitationSidebarFilter.py | 4 +- src/Filters/SideBar/_EventSidebarFilter.py | 2 +- src/Filters/SideBar/_MediaSidebarFilter.py | 2 +- src/Filters/SideBar/_PersonSidebarFilter.py | 4 +- src/gui/filtereditor.py | 3 + src/gui/widgets/Makefile.am | 1 + src/gui/widgets/__init__.py | 1 + src/gui/widgets/dateentry.py | 75 +++++++++++++++++++ 9 files changed, 87 insertions(+), 6 deletions(-) create mode 100644 src/gui/widgets/dateentry.py diff --git a/po/POTFILES.skip b/po/POTFILES.skip index d85c0877f..d9ea4fe42 100644 --- a/po/POTFILES.skip +++ b/po/POTFILES.skip @@ -266,6 +266,7 @@ src/gui/views/treemodels/sourcemodel.py # gui/widgets - the GUI widgets package src/gui/widgets/basicentry.py +src/gui/widgets/dateentry.py src/gui/widgets/menutoolbuttonaction.py src/gui/widgets/styledtextbuffer.py src/gui/widgets/undoablestyledbuffer.py diff --git a/src/Filters/SideBar/_CitationSidebarFilter.py b/src/Filters/SideBar/_CitationSidebarFilter.py index c9879615f..58d53d066 100644 --- a/src/Filters/SideBar/_CitationSidebarFilter.py +++ b/src/Filters/SideBar/_CitationSidebarFilter.py @@ -40,7 +40,7 @@ import gtk # GRAMPS modules # #------------------------------------------------------------------------- -from gui.widgets import MonitoredMenu +from gui.widgets import MonitoredMenu, DateEntry import gen.lib from Filters.SideBar import SidebarFilter from Filters import GenericFilterFactory, build_filter_model, Rules @@ -60,7 +60,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/src/Filters/SideBar/_EventSidebarFilter.py b/src/Filters/SideBar/_EventSidebarFilter.py index 8e2e9e764..5e2dcc2ca 100644 --- a/src/Filters/SideBar/_EventSidebarFilter.py +++ b/src/Filters/SideBar/_EventSidebarFilter.py @@ -70,7 +70,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/src/Filters/SideBar/_MediaSidebarFilter.py b/src/Filters/SideBar/_MediaSidebarFilter.py index bf45e3e5d..dda2a3d6a 100644 --- a/src/Filters/SideBar/_MediaSidebarFilter.py +++ b/src/Filters/SideBar/_MediaSidebarFilter.py @@ -61,7 +61,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/src/Filters/SideBar/_PersonSidebarFilter.py b/src/Filters/SideBar/_PersonSidebarFilter.py index 321806c3c..8fcc7aa3c 100644 --- a/src/Filters/SideBar/_PersonSidebarFilter.py +++ b/src/Filters/SideBar/_PersonSidebarFilter.py @@ -74,8 +74,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 = gen.lib.Event() self.filter_event.set_type((gen.lib.EventType.CUSTOM, u'')) self.etype = gtk.ComboBoxEntry() diff --git a/src/gui/filtereditor.py b/src/gui/filtereditor.py index 9f1c843fd..45a7a2e0f 100644 --- a/src/gui/filtereditor.py +++ b/src/gui/filtereditor.py @@ -68,6 +68,7 @@ import AutoComp from gui.selectors import SelectorFactory from gen.display.name import displayer as _nd import Utils +from gui.widgets import DateEntry #------------------------------------------------------------------------- # @@ -552,6 +553,8 @@ class EditRule(ManagedWindow.ManagedWindow): elif v == _('Confidence level:'): t = MyList(map(str, range(5)), [Utils.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/src/gui/widgets/Makefile.am b/src/gui/widgets/Makefile.am index b7eac321a..493c83798 100644 --- a/src/gui/widgets/Makefile.am +++ b/src/gui/widgets/Makefile.am @@ -10,6 +10,7 @@ pkgpython_PYTHON = \ __init__.py \ basicentry.py \ buttons.py \ + dateentry.py \ expandcollapsearrow.py \ grampletpane.py \ labels.py \ diff --git a/src/gui/widgets/__init__.py b/src/gui/widgets/__init__.py index 2a2a0020c..c7e875574 100644 --- a/src/gui/widgets/__init__.py +++ b/src/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/src/gui/widgets/dateentry.py b/src/gui/widgets/dateentry.py new file mode 100644 index 000000000..9f6312081 --- /dev/null +++ b/src/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 +# +#------------------------------------------------------------------------- +import gtk + +#------------------------------------------------------------------------- +# +# Gramps modules +# +#------------------------------------------------------------------------- +from gui.widgets.monitoredwidgets import MonitoredDate +from gui.widgets.validatedmaskedentry import ValidatableMaskedEntry +from 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.ICON_SIZE_BUTTON) + button = gtk.Button() + button.set_image(image) + button.set_relief(gtk.RELIEF_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)