diff --git a/gramps/gen/filters/rules/_rule.py b/gramps/gen/filters/rules/_rule.py index f8d5859b6..63c9f3872 100644 --- a/gramps/gen/filters/rules/_rule.py +++ b/gramps/gen/filters/rules/_rule.py @@ -141,8 +141,10 @@ class Rule: def display_values(self): """Return the labels and values of this rule.""" - l_v = ( '%s="%s"' % (_(self.labels[ix]), self.list[ix]) - for ix in range(len(self.list)) if self.list[ix] ) + l_v = ('%s="%s"' % (_(self.labels[ix][0] if + isinstance(self.labels[ix], tuple) else + self.labels[ix]), self.list[ix]) + for ix in range(len(self.list)) if self.list[ix]) return ';'.join(l_v) diff --git a/gramps/gui/editors/filtereditor.py b/gramps/gui/editors/filtereditor.py index e53eb5070..431b4b05d 100644 --- a/gramps/gui/editors/filtereditor.py +++ b/gramps/gui/editors/filtereditor.py @@ -501,7 +501,11 @@ class EditRule(ManagedWindow): grid.set_row_spacing(6) grid.show() for v in arglist: - l = Gtk.Label(label=v, halign=Gtk.Align.END) + if isinstance(v, tuple): + # allows filter to create its own GUI element + l = Gtk.Label(label=v[0], halign=Gtk.Align.END) + else: + l = Gtk.Label(label=v, halign=Gtk.Align.END) l.show() if v == _('Place:'): t = MyPlaces([]) @@ -585,6 +589,9 @@ class EditRule(ManagedWindow): elif v == _('Units:'): t = MyList([0, 1, 2], [_('kilometers'), _('miles'), _('degrees')]) + elif isinstance(v, tuple): + # allow filter to create its own GUI element + t = v[1](self.db) else: t = MyEntry() t.set_hexpand(True)