diff --git a/src/DataViews/GeoView.py b/src/DataViews/GeoView.py index 36ea1e0c8..16094d804 100644 --- a/src/DataViews/GeoView.py +++ b/src/DataViews/GeoView.py @@ -245,6 +245,7 @@ class GeoView(HtmlView): self.stylesheetlbl = None self.displaytype = "person" self.nbmarkers = 0 + self.nbplaces = 0 self.without = 0 self.nbpages = 0 self.yearinmarker = [] @@ -402,14 +403,13 @@ class GeoView(HtmlView): if widget == None: return page = widget.get_label() - #ftype = {"<<":'P', ">>":'E', }.get(page, 'X') - if ( page == "<<" ): + (current, maxp ) = self.pages[1].get_label().split('/', 1) + if ( page == "<<" and int(current) > 1): cpage = -1 - elif ( page == ">>" ): + elif ( page == ">>" and int(current) < int(maxp)): cpage = +1 else: cpage = 0 - (current, maxp ) = self.pages[1].get_label().split('/', 1) cpage += int(current) self.last_page = cpage ftype = {"places":'P', "event":'E', "family":'F', "person":'I'}.get( @@ -425,6 +425,7 @@ class GeoView(HtmlView): self.open(url) self._create_pages_selection(cpage, int(maxp)) self._savezoomandposition() + self.buttons[0].set_active(True) def _show_places_without_coord(self, widget): # pylint: disable-msg=W0613 """ @@ -445,12 +446,12 @@ class GeoView(HtmlView): for entry in self.combobox.get_model(): if ( entry[0] == place ): # Is this entry in the current page ? - if self.last_page == entry[2]: + if self.last_page == int(entry[2]): # Yes, we don't need to load another page. - self.renderer.execute_script( - "javascript:placeclick('%d')" % entry[1]) + self._show_place_info_bubble(entry[1]) else: # No, we need to load the correct page + self.last_page = int(entry[2]) ftype = { "places":'P', "event":'E', "family":'F', @@ -468,11 +469,18 @@ class GeoView(HtmlView): (current, maxp ) = self.pages[1].get_label().split('/', 1) self._create_pages_selection(entry[2], int(maxp)) self._savezoomandposition() - # Now the page is loaded, we can show the info bubble - self.renderer.execute_script( - "javascript:placeclick('%d')" % entry[1]) + self.buttons[0].set_active(True) + # Need to wait the page is loaded to show the markers. + gobject.timeout_add(800, self._show_place_info_bubble, entry[1]) return + def _show_place_info_bubble(self, marker_index): + """ + We need to call javascript to show the info bubble. + """ + self.renderer.execute_script("javascript:placeclick('%d')" % + marker_index) + def on_delete(self): """ We need to suppress temporary files here. @@ -601,7 +609,7 @@ class GeoView(HtmlView): self.open(url) self._savezoomandposition() # Need to wait the page is loaded to set the markers. - gobject.timeout_add(500, self._set_markersonpage, self.last_radio) + gobject.timeout_add(800, self._set_markersonpage, self.last_radio) def _set_markersonpage(self, widget): """ @@ -855,6 +863,7 @@ class GeoView(HtmlView): # While the db is not loaded, we have 0 markers. self._savezoomandposition() self.nbmarkers = 0 + self.nbplaces = 0 self.without = 0 self._createmapstraction(self.displaytype) self._do_we_need_to_zoom_between_map() @@ -1017,15 +1026,6 @@ class GeoView(HtmlView): self.mapview.write("display: none; ") self.mapview.write("height: %dpx\">\n" % (self.height - self.header_size )) - self.psort = sorted(self.placeslist, key=operator.itemgetter(0)) - for place in self.psort: - self.plist.append([ place[0], int(place[1]), int(curpage)] ) - self.combobox.set_model(self.plist) - if self.displaytype == "places": - self.label.set_text(_("%d places" % self.nbmarkers)) - else: - self.label.set_text(_("Places list")) - self.combobox.get_child().set_text('') self.mapview.write("