diff --git a/gramps/gui/selectors/selectplace.py b/gramps/gui/selectors/selectplace.py index e988464c9..477bd56b3 100644 --- a/gramps/gui/selectors/selectplace.py +++ b/gramps/gui/selectors/selectplace.py @@ -74,5 +74,17 @@ class SelectPlace(BaseSelector): def get_from_handle_func(self): return self.db.get_place_from_handle + def setup_filter(self): + """Build the default filters and add them to the filter menu. + This overrides the baseselector method because we use the hidden + COL_SEARCH (11) that has alt names as well as primary name for name + searching""" + cols = [(pair[3], + pair[1] if pair[1] else 11, + pair[0] in self.exact_search()) + for pair in self.column_order() if pair[0] + ] + self.search_bar.setup_filter(cols) + WIKI_HELP_PAGE = URL_MANUAL_SECT2 WIKI_HELP_SEC = _('manual|Select_Place_selector') diff --git a/gramps/gui/views/treemodels/placemodel.py b/gramps/gui/views/treemodels/placemodel.py index 7e87534e7..b94950e4e 100644 --- a/gramps/gui/views/treemodels/placemodel.py +++ b/gramps/gui/views/treemodels/placemodel.py @@ -81,7 +81,8 @@ class PlaceBaseModel: self.column_private, self.column_tags, self.column_change, - self.column_tag_color + self.column_tag_color, + self.search_name, ] self.smap = [ self.column_name, @@ -94,7 +95,8 @@ class PlaceBaseModel: self.column_private, self.column_tags, self.sort_change, - self.column_tag_color + self.column_tag_color, + self.search_name, ] def destroy(self): @@ -127,8 +129,13 @@ class PlaceBaseModel: return value def column_name(self, data): - # need for spacing on the french translation - return _(',').join([data[6][0]] + [name[0] for name in data[7]]) + """ Return the primary name """ + return data[6][0] + + def search_name(self, data): + """ The search name includes all alt names to enable finding by alt name + """ + return ','.join([data[6][0]] + [name[0] for name in data[7]]) def column_longitude(self, data): if not data[3]: diff --git a/gramps/plugins/lib/libplaceview.py b/gramps/plugins/lib/libplaceview.py index 6730ada6c..d2979552f 100644 --- a/gramps/plugins/lib/libplaceview.py +++ b/gramps/plugins/lib/libplaceview.py @@ -79,6 +79,7 @@ class PlaceBaseView(ListView): COL_PRIV = 7 COL_TAGS = 8 COL_CHAN = 9 + COL_SEARCH = 11 # column definitions COLUMNS = [ (_('Name'), TEXT, None), @@ -138,6 +139,17 @@ class PlaceBaseView(ListView): def navigation_type(self): return 'Place' + def setup_filter(self): + """Build the default filters and add them to the filter menu. + This overrides the listview method because we use the hidden + COL_SEARCH that has alt names as well as primary name for name + searching""" + self.search_bar.setup_filter( + [(self.COLUMNS[pair[1]][0], + self.COL_SEARCH if pair[1] == self.COL_NAME else pair[1], + pair[1] in self.exact_search()) + for pair in self.column_order() if pair[0]]) + def define_actions(self): ListView.define_actions(self) self._add_toolmenu_action('MapsList', _('Loading...'),