diff --git a/gramps/plugins/lib/maps/geography.py b/gramps/plugins/lib/maps/geography.py index 80c762746..a2bc7ed0c 100644 --- a/gramps/plugins/lib/maps/geography.py +++ b/gramps/plugins/lib/maps/geography.py @@ -142,8 +142,27 @@ class GeoGraphyView(OsmGps, NavigationView): self.centerlat = config.get("geography.center-lat") self.zoom = config.get("geography.zoom") self.lock = config.get("geography.lock") - if config.get('geography.path') == "": + tile_path = config.get('geography.path') + if tile_path == "": config.set('geography.path', GEOGRAPHY_PATH) + else: + # verify is the path always exists + if os.path.exists(tile_path) and os.path.isdir(tile_path): + self.tile_path_ok = True + else: + self.tile_path_ok = False + try: + os.makedirs(tile_path, 0o755) # create dir like mkdir -p + except: + from gramps.gui.dialog import WarningDialog + WarningDialog(_("Tile path"), + _("The tile directory doesn't exist anymore:" + "\n%s\nTrying to create a new one failed." + "\nConfigure the view for the tile path" + " and restart gramps." + % tile_path), + parent=uistate.window) + if not config.is_set('geography.personal-map'): config.set('geography.personal-map', "") @@ -274,11 +293,12 @@ class GeoGraphyView(OsmGps, NavigationView): """ Clear the map: places, markers, tracks, messages... """ - self.place_list = [] - self.remove_all_markers() - self.remove_all_gps() - self.remove_all_tracks() - self.message_layer.clear_messages() + if self.osm is not None: + self.place_list = [] + self.remove_all_markers() + self.remove_all_gps() + self.remove_all_tracks() + self.message_layer.clear_messages() def change_db(self, dbse): """ @@ -291,7 +311,10 @@ class GeoGraphyView(OsmGps, NavigationView): dummy_dbse = dbse if self.active: self.bookmarks.redraw() - self.build_tree() + if self.osm is not None: + self.build_tree() + self.osm.grab_focus() + self.set_crosshair(config.get("geography.show_cross")) def can_configure(self): """ @@ -541,7 +564,8 @@ class GeoGraphyView(OsmGps, NavigationView): """ Remove the specified layer """ - self.osm.remove_layer(layer) + if self.osm is not None: + self.osm.remove_layer(layer) def add_marker(self, menu, event, lat, lon, event_type, differtype, count, color=None): @@ -568,19 +592,22 @@ class GeoGraphyView(OsmGps, NavigationView): """ Remove all gps points on the map """ - self.osm.gps_clear() + if self.osm is not None: + self.osm.gps_clear() def remove_all_tracks(self): """ Remove all tracks on the map """ - self.osm.track_remove_all() + if self.osm is not None: + self.osm.track_remove_all() def remove_all_markers(self): """ Remove all markers on the map """ - self.marker_layer.clear_markers() + if self.osm is not None: + self.marker_layer.clear_markers() def _present_in_places_list(self, index, string): """ diff --git a/gramps/plugins/view/geoclose.py b/gramps/plugins/view/geoclose.py index a731525dc..99e96cc24 100644 --- a/gramps/plugins/view/geoclose.py +++ b/gramps/plugins/view/geoclose.py @@ -293,6 +293,8 @@ class GeoClose(GeoGraphyView): """ Rebuild the tree with the given person handle as the root. """ + if self.osm is None: + return self.place_list_active = [] self.place_list_ref = [] self.all_place_list = [] @@ -402,6 +404,8 @@ class GeoClose(GeoGraphyView): all handling of visibility is now in rebuild_trees, see that for more information. """ + if self.osm is None: + return self.lifeway_layer.clear_ways() if not self.dbstate.is_open(): return diff --git a/gramps/plugins/view/geoevents.py b/gramps/plugins/view/geoevents.py index a0b3bc025..f6f9ad066 100644 --- a/gramps/plugins/view/geoevents.py +++ b/gramps/plugins/view/geoevents.py @@ -216,6 +216,8 @@ class GeoEvents(GeoGraphyView): """ Rebuild the tree with the given events handle as the root. """ + if self.osm is None: + return self.places_found = [] self.build_tree() @@ -232,6 +234,8 @@ class GeoEvents(GeoGraphyView): all handling of visibility is now in rebuild_trees, see that for more information. """ + if self.osm is None: + return if not self.dbstate.is_open(): return active = self.uistate.get_active('Event') @@ -320,6 +324,8 @@ class GeoEvents(GeoGraphyView): Create all markers for each people's event in the database which has a lat/lon. """ + if self.osm is None: + return dbstate = self.dbstate self.place_list = [] self.places_found = [] diff --git a/gramps/plugins/view/geofamclose.py b/gramps/plugins/view/geofamclose.py index 912958fc4..c03057717 100644 --- a/gramps/plugins/view/geofamclose.py +++ b/gramps/plugins/view/geofamclose.py @@ -325,6 +325,8 @@ class GeoFamClose(GeoGraphyView): """ Rebuild the tree with the given family handle as reference. """ + if self.osm is None: + return self.place_list_active = [] self.place_list_ref = [] self.all_place_list = [] @@ -395,6 +397,8 @@ class GeoFamClose(GeoGraphyView): all handling of visibility is now in rebuild_trees, see that for more information. """ + if self.osm is None: + return self.lifeway_layer.clear_ways() if not self.dbstate.is_open(): return diff --git a/gramps/plugins/view/geofamily.py b/gramps/plugins/view/geofamily.py index 942c20051..e629f3fc0 100644 --- a/gramps/plugins/view/geofamily.py +++ b/gramps/plugins/view/geofamily.py @@ -216,6 +216,8 @@ class GeoFamily(GeoGraphyView): """ Rebuild the tree with the given person handle as the root. """ + if self.osm is None: + return self.build_tree() def build_tree(self): @@ -435,6 +437,8 @@ class GeoFamily(GeoGraphyView): Create all markers for each people's event in the database which has a lat/lon. """ + if self.osm is None: + return if not handle: return self.place_list = [] diff --git a/gramps/plugins/view/geomoves.py b/gramps/plugins/view/geomoves.py index 23c4d711a..d31c05899 100644 --- a/gramps/plugins/view/geomoves.py +++ b/gramps/plugins/view/geomoves.py @@ -269,6 +269,8 @@ class GeoMoves(GeoGraphyView): """ Rebuild the tree with the given family handle as reference. """ + if self.osm is None: + return if not self.started: self.started = True self.place_list_active = [] @@ -290,6 +292,8 @@ class GeoMoves(GeoGraphyView): all handling of visibility is now in rebuild_trees, see that for more information. """ + if self.osm is None: + return self.place_list_active = [] self.place_list_ref = [] self.sort = [] diff --git a/gramps/plugins/view/geoperson.py b/gramps/plugins/view/geoperson.py index 1134ecca7..ed4e2dc8d 100644 --- a/gramps/plugins/view/geoperson.py +++ b/gramps/plugins/view/geoperson.py @@ -266,6 +266,8 @@ class GeoPerson(GeoGraphyView): """ Rebuild the tree with the given person handle as the root. """ + if self.osm is None: + return active = self.get_active() self._createmap(None) self.uistate.modify_statusbar(self.dbstate) @@ -356,6 +358,8 @@ class GeoPerson(GeoGraphyView): a lat/lon. @param: active is mandatory but unused in this view. Fix : 10088 """ + if self.osm is None: + return dbstate = self.dbstate self.cal = config.get('preferences.calendar-format-report') self.place_list = [] diff --git a/gramps/plugins/view/geoplaces.py b/gramps/plugins/view/geoplaces.py index bc520c7ff..64b08567a 100644 --- a/gramps/plugins/view/geoplaces.py +++ b/gramps/plugins/view/geoplaces.py @@ -267,6 +267,8 @@ class GeoPlaces(GeoGraphyView): """ Rebuild the tree with the given places handle as the root. """ + if self.osm is None: + return self.places_found = [] self.build_tree() @@ -332,6 +334,8 @@ class GeoPlaces(GeoGraphyView): Create all markers for each people's event in the database which has a lat/lon. """ + if self.osm is None: + return dbstate = self.dbstate self.place_list = [] self.places_found = []