GeoView : Cleaning code, solve resizing and back and forward problems.

svn: r11570
This commit is contained in:
Serge Noiraud 2009-01-04 23:42:20 +00:00
parent f9be2655d6
commit 6be7146e38

View File

@ -46,8 +46,6 @@ import time
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
import gtk import gtk
#import pdb
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
# Set up logging # Set up logging
@ -139,6 +137,9 @@ class Renderer():
""" """
return self.window return self.window
def get_uri(self):
return self.window.get_main_frame().get_uri()
def show_all(self): def show_all(self):
self.window.show_all() self.window.show_all()
@ -311,7 +312,7 @@ class HtmlView(PageView.PageView):
#load a welcome html page #load a welcome html page
urlhelp = self.create_start_page() urlhelp = self.create_start_page()
self.renderer.open(urlhelp) self.open(urlhelp)
self.renderer.show_all() self.renderer.show_all()
return self.box return self.box
@ -330,13 +331,20 @@ class HtmlView(PageView.PageView):
hbox.pack_start(button, False, False, 4) hbox.pack_start(button, False, False, 4)
return hbox return hbox
def set_button_sensitivity(self):
self.forward_action.set_sensitive(self.renderer.can_go_forward())
self.back_action.set_sensitive(self.renderer.can_go_back())
def open(self, url):
self.renderer.open(url)
self.set_button_sensitivity()
def _on_activate(self, object): def _on_activate(self, object):
url = self.urlfield.get_text() url = self.urlfield.get_text()
if url.find('://') == -1: if url.find('://') == -1:
url = 'http://'+ url url = 'http://'+ url
self.renderer.open(url) self.external_url = True
self.forward_action.set_sensitive(self.renderer.can_go_forward()) self.open(url)
self.back_action.set_sensitive(self.renderer.can_go_back())
def build_tree(self): def build_tree(self):
""" """
@ -405,6 +413,8 @@ class GeoView(HtmlView):
self.usedmap = "openstreetmap" self.usedmap = "openstreetmap"
self.displaytype = "person" self.displaytype = "person"
self.external_url = False
self.need_to_resize = False
# Create a temporary dot file # Create a temporary dot file
(handle,self.htmlfile) = tempfile.mkstemp(".html","GeoV", (handle,self.htmlfile) = tempfile.mkstemp(".html","GeoV",
@ -427,14 +437,17 @@ class GeoView(HtmlView):
self.box.parent.connect("size-allocate", self.size_request_for_map) self.box.parent.connect("size-allocate", self.size_request_for_map)
self.size_request_for_map(widget.parent,event) self.size_request_for_map(widget.parent,event)
def request_resize(self):
self.size_request_for_map(self.box.parent,None,None)
self.geo_places(self.htmlfile,self.displaytype)
def size_request_for_map(self, widget, event, data=None): def size_request_for_map(self, widget, event, data=None):
v = widget.get_allocation() v = widget.get_allocation()
self.width = v.width self.width = v.width
self.height = v.height self.height = v.height
uri = self.renderer.get_uri()
self.external_uri()
if self.need_to_resize != True:
try:
self.geo_places(self.htmlfile,self.displaytype)
except:
pass
def set_active(self): def set_active(self):
self.key_active_changed = self.dbstate.connect('active-changed', self.key_active_changed = self.dbstate.connect('active-changed',
@ -458,15 +471,30 @@ class GeoView(HtmlView):
def refresh(self,button): def refresh(self,button):
self.renderer.refresh(); self.renderer.refresh();
def external_uri(self):
uri = self.renderer.get_uri()
if self.external_url:
self.external_url = False
self.need_to_resize = True
else:
try:
if uri.find(self.htmlfile) == -1:
# external web page or start_page
self.need_to_resize = True
else:
self.need_to_resize = False
except:
pass
def go_back(self,button): def go_back(self,button):
self.renderer.go_back(); self.renderer.go_back();
self.forward_action.set_sensitive(self.renderer.can_go_forward()) self.set_button_sensitivity()
self.back_action.set_sensitive(self.renderer.can_go_back()) self.external_uri()
def go_forward(self,button): def go_forward(self,button):
self.renderer.go_forward(); self.renderer.go_forward();
self.forward_action.set_sensitive(self.renderer.can_go_forward()) self.set_button_sensitivity()
self.back_action.set_sensitive(self.renderer.can_go_back()) self.external_uri()
def ui_definition(self): def ui_definition(self):
""" """
@ -619,12 +647,13 @@ class GeoView(HtmlView):
""" """
Specifies the places to display with mapstraction. Specifies the places to display with mapstraction.
""" """
self.external_url = False
if htmlfile == None: if htmlfile == None:
htmlfile = MOZEMBED_PATH+"help.html" htmlfile = MOZEMBED_PATH+"help.html"
self.createHelp(htmlfile) self.createHelp(htmlfile)
else: else:
self.createMapstraction(htmlfile,displaytype) self.createMapstraction(htmlfile,displaytype)
self.renderer.open("file://"+htmlfile) self.open("file://"+htmlfile)
def select_OpenStreetMap_map(self,handle=None): def select_OpenStreetMap_map(self,handle=None):
self.usedmap = "openstreetmap" self.usedmap = "openstreetmap"
@ -858,8 +887,8 @@ class GeoView(HtmlView):
def create_markers(self,format): def create_markers(self,format):
self.centered = 0 self.centered = 0
margin = 10 margin = 10
self.mapview.write(" <div id=\"map\" style=\"width: %dpx; height: %dpx; margin: %d\"></div>\n" % self.mapview.write(" <div id=\"map\" style=\"width: %dpx; height: %dpx\"></div>\n" %
( ( self.width - margin*4 ), ( self.height * 0.73 ), margin )) ( ( self.width - margin*4 ), ( self.height * 0.74 )))
self.mapview.write(" <script type=\"text/javascript\">\n") self.mapview.write(" <script type=\"text/javascript\">\n")
self.mapview.write(" var mapstraction = new Mapstraction('map','%s');\n"%self.usedmap) self.mapview.write(" var mapstraction = new Mapstraction('map','%s');\n"%self.usedmap)
self.mapview.write(" mapstraction.addControls({ pan: true, zoom: 'large', ") self.mapview.write(" mapstraction.addControls({ pan: true, zoom: 'large', ")
@ -973,7 +1002,7 @@ class GeoView(HtmlView):
yearinmarker = [] yearinmarker = []
years="" years=""
self.mapview.write(" mapstraction.addMarker(my_marker);\n") self.mapview.write(" mapstraction.addMarker(my_marker);\n")
if self.mustcenter == True: if self.mustcenter:
self.centered = 1 self.centered = 1
self.mapview.write(" var point = new LatLonPoint(%s,%s);\n"%(latit,longt)) self.mapview.write(" var point = new LatLonPoint(%s,%s);\n"%(latit,longt))
self.mapview.write(" mapstraction.setCenterAndZoom(point, %s);\n"%self.zoom) self.mapview.write(" mapstraction.setCenterAndZoom(point, %s);\n"%self.zoom)
@ -986,7 +1015,6 @@ class GeoView(HtmlView):
cent=int(mark[6]) cent=int(mark[6])
if (cent == 1): if (cent == 1):
self.centered = 1 self.centered = 1
#pdb.set_trace()
if ( signminlat == 1 and signmaxlat == 1 ): if ( signminlat == 1 and signmaxlat == 1 ):
latit = self.maxlat+centerlat latit = self.maxlat+centerlat
LOG.debug("latit 1 : %f" % self.maxlat) LOG.debug("latit 1 : %f" % self.maxlat)
@ -1021,7 +1049,7 @@ class GeoView(HtmlView):
if format == 1: if format == 1:
self.mapview.write("%s<br>____________<br><br>%s"%(mark[0],mark[5])) self.mapview.write("%s<br>____________<br><br>%s"%(mark[0],mark[5]))
elif format == 2: elif format == 2:
self.mapview.write("%s<br>____________<br><br>%s - %s"%(mark[1],mark[7],mark[5])) self.mapview.write("%s____________<br><br>%s - %s"%(mark[1],mark[7],mark[5]))
elif format == 3: elif format == 3:
self.mapview.write("%s<br>____________<br><br>%s - %s"%(mark[0],mark[7],mark[5])) self.mapview.write("%s<br>____________<br><br>%s - %s"%(mark[0],mark[7],mark[5]))
elif format == 4: elif format == 4:
@ -1072,7 +1100,7 @@ class GeoView(HtmlView):
yearinmarker = [] yearinmarker = []
years="" years=""
self.mapview.write(" mapstraction.addMarker(my_marker);\n") self.mapview.write(" mapstraction.addMarker(my_marker);\n")
if self.mustcenter == True: if self.mustcenter:
self.centered = 1 self.centered = 1
self.mapview.write(" var point = new LatLonPoint(%s,%s);\n"%(self.latit,self.longt)) self.mapview.write(" var point = new LatLonPoint(%s,%s);\n"%(self.latit,self.longt))
self.mapview.write(" mapstraction.setCenterAndZoom(point, %s);\n"%self.zoom) self.mapview.write(" mapstraction.setCenterAndZoom(point, %s);\n"%self.zoom)
@ -1222,27 +1250,24 @@ class GeoView(HtmlView):
descr1 = _("Id : %s (%s)")%(event.gramps_id,eventyear) descr1 = _("Id : %s (%s)")%(event.gramps_id,eventyear)
if pl_id: if pl_id:
place = db.db.get_place_from_handle(pl_id) place = db.db.get_place_from_handle(pl_id)
#ref = db.db.get_person_from_handle(event)
#
# question :
# how to obtain the list of the people referenced by this event ?
#
refs = event.get_referenced_handles_recursively()
if refs:
for ref in refs:
person = db.db.get_person_from_handle(ref)
#descr = _("%s; %s for %s") % (gen.lib.EventType(event.get_type()),place.get_title(), _nd.display(person))
descr = "inconnu"
else:
descr = _("%s; %s") % (gen.lib.EventType(event.get_type()),place.get_title())
#descr = place.get_title()
longitude = place.get_longitude() longitude = place.get_longitude()
latitude = place.get_latitude() latitude = place.get_latitude()
latitude, longitude = conv_lat_lon(latitude, longitude, "D.D8") latitude, longitude = conv_lat_lon(latitude, longitude, "D.D8")
city = place.get_main_location().get_city() city = place.get_main_location().get_city()
country = place.get_main_location().get_country() country = place.get_main_location().get_country()
descr2 = _("%s; %s") % (city,country) descr2 = "%s; %s" % (city,country)
if ( cmp(longitude,"") == 1 | cmp(latitude,"") == 1 ): if ( cmp(longitude,"") == 1 | cmp(latitude,"") == 1 ):
person_list = [ db.db.get_person_from_handle(ref_handle)
for (ref_type, ref_handle) in db.db.find_backlink_handles(event_handle)
if ref_type == 'Person'
]
if person_list:
descr = "<br>"
for person in person_list:
descr = _("%s%s<br>") % (descr, _nd.display(person))
descr = _("%s; %s%s") % (gen.lib.EventType(event.get_type()),place.get_title(), descr)
else:
descr = _("%s; %s<br>") % (gen.lib.EventType(event.get_type()),place.get_title())
self.append_to_places_list(descr1, descr, self.append_to_places_list(descr1, descr,
descr, descr,
latitude, longitude, latitude, longitude,