GeoView : Some css correction.

Added places list over the map.
          Mapstraction infobull correction.


svn: r13279
This commit is contained in:
Serge Noiraud 2009-09-30 21:41:50 +00:00
parent 1e5b2c02ed
commit a70cc55d01
3 changed files with 163 additions and 32 deletions

View File

@ -67,10 +67,10 @@ from PlaceUtils import conv_lat_lon
# map icons # map icons
# #
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
_icons = { _ICONS = {
gen.lib.EventType.BIRTH : 'gramps-geo-birth', gen.lib.EventType.BIRTH : 'gramps-geo-birth',
gen.lib.EventType.DEATH : 'gramps-geo-death', gen.lib.EventType.DEATH : 'gramps-geo-death',
gen.lib.EventType.MARRIAGE : 'gramps-geo-marriage', gen.lib.EventType.MARRIAGE : 'gramps-geo-marriage',
} }
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
@ -155,6 +155,9 @@ _JAVASCRIPT = '''<script>
document.title = "zoom=" + zoom + " coord=" + pos + ":::"; document.title = "zoom=" + zoom + " coord=" + pos + ":::";
}} }}
}} }}
function placeclick(i) {{
gmarkers[i].openBubble();
}}
function removemarkers(mapstraction) {{ function removemarkers(mapstraction) {{
for ( m=0; m < gmarkers.length; m++) {{ for ( m=0; m < gmarkers.length; m++) {{
mapstraction.removeMarker(gmarkers[m]); mapstraction.removeMarker(gmarkers[m]);
@ -183,6 +186,7 @@ _JAVASCRIPT = '''<script>
mapstraction.enableScrollWheelZoom(); mapstraction.enableScrollWheelZoom();
{set_radio} {set_radio}
}} }}
''' '''
_HTMLTRAILER = ''' _HTMLTRAILER = '''
@ -249,6 +253,9 @@ def _get_zoom_long(value):
return zoomlong + 2 return zoomlong + 2
def make_callback(func, val): def make_callback(func, val):
"""
return a function
"""
return lambda x: func(val) return lambda x: func(val)
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
@ -266,6 +273,9 @@ class GeoView(HtmlView):
self.dbstate = dbstate self.dbstate = dbstate
self.dbstate.connect('database-changed', self._new_database) self.dbstate.connect('database-changed', self._new_database)
self.usedmap = "openstreetmap" self.usedmap = "openstreetmap"
self.placeslist = []
self.stylesheetlabel = []
self.stylesheetdata = {}
self.displaytype = "person" self.displaytype = "person"
self.nbmarkers = 0 self.nbmarkers = 0
self.without = 0 self.without = 0
@ -543,7 +553,8 @@ class GeoView(HtmlView):
for i, stylesheet in zip(range(len(stylelist)), stylelist): for i, stylesheet in zip(range(len(stylelist)), stylelist):
key = stylesheet[0].replace(' ', '-') key = stylesheet[0].replace(' ', '-')
add_menuitem(menu, stylesheet[0], stylesheet[1] , add_menuitem(menu, stylesheet[0], stylesheet[1] ,
make_callback(self.set_mapstylesheet, stylesheet[1])) make_callback(self.set_mapstylesheet,
stylesheet[1]))
self.stylesheetdata[key] = stylesheet[0] self.stylesheetdata[key] = stylesheet[0]
return menu return menu
@ -664,6 +675,9 @@ class GeoView(HtmlView):
self._change_map("microsoft") self._change_map("microsoft")
def _set_lock_unlock_icon(self): def _set_lock_unlock_icon(self):
"""
Change the lock/unlock icon depending on the button state.
"""
actionstyles = self.lock_action.get_action('SaveZoom') actionstyles = self.lock_action.get_action('SaveZoom')
widgets = actionstyles.get_proxies() widgets = actionstyles.get_proxies()
for widget in widgets : for widget in widgets :
@ -754,8 +768,9 @@ class GeoView(HtmlView):
self.mapview.write("</head>\n") self.mapview.write("</head>\n")
self.mapview.write("<body >\n") self.mapview.write("<body >\n")
self.mapview.write("<div id='geo-content' ") self.mapview.write("<div id='geo-content' ")
self.mapview.write("style='") #self.mapview.write("style='")
self.mapview.write("font-size:10pt; height:75px' >\n") #self.mapview.write("font-size:10pt; height:75px' >\n")
self.mapview.write(">\n")
if maxpages > 1: if maxpages > 1:
message = _("There are %d markers to display. They are split up " message = _("There are %d markers to display. They are split up "
"over %d pages of %d markers : " % (self.nbmarkers, "over %d pages of %d markers : " % (self.nbmarkers,
@ -830,14 +845,21 @@ class GeoView(HtmlView):
self.mapview.write("</div>\n") self.mapview.write("</div>\n")
self.mapview.write("<div id=\"openstreetmap\" class=\"Mapstraction\"") self.mapview.write("<div id=\"openstreetmap\" class=\"Mapstraction\"")
self.mapview.write(" style=\"width: %dpx; " % (self.width - margin*4)) self.mapview.write(" style=\"width: %dpx; " % (self.width - margin*4))
self.mapview.write("margin-left:auto; margin-right:auto;")
self.mapview.write("height: %dpx\"></div>\n" % (self.height * 0.74)) self.mapview.write("height: %dpx\"></div>\n" % (self.height * 0.74))
self.mapview.write("<div id=\"%s\" class=\"Mapstraction\"" % \ self.mapview.write("<div id=\"%s\" class=\"Mapstraction\"" % \
_alternate_map()) _alternate_map())
self.mapview.write(" style=\"display: none; ") self.mapview.write(" style=\"display: none; ")
self.mapview.write("margin-left:auto; margin-right:auto;")
self.mapview.write("width: %dpx; height: %dpx\"></div>\n" % \ self.mapview.write("width: %dpx; height: %dpx\"></div>\n" % \
((self.width - margin*4), (self.height * 0.74 ))) ((self.width - margin*4), (self.height * 0.74 )))
self.mapview.write("<div id='geo-theplaces' ><ul id='geo-title' >")
self.mapview.write("<li id='geo-thetitle'>%s<ul id='geo-liste' >" %
_("The places list") )
self.psort = sorted(self.placeslist, key=operator.itemgetter(0))
self.plist = ""
for place in self.psort:
self.plist += "<li><a href=\"javascript:placeclick" \
"(%d);\">%s</a></li>" % (place[1], place[0])
self.mapview.write("%s</ul></li></ul></div>\n" % self.plist)
self.mapview.write("<script type=\"text/javascript\">\n") self.mapview.write("<script type=\"text/javascript\">\n")
self.mapview.write(" var mapstraction = new Mapstraction") self.mapview.write(" var mapstraction = new Mapstraction")
self.mapview.write("('openstreetmap','openstreetmap');\n") self.mapview.write("('openstreetmap','openstreetmap');\n")
@ -1041,6 +1063,13 @@ class GeoView(HtmlView):
self.place_without_coordinates.append([gid, place]) self.place_without_coordinates.append([gid, place])
self.without += 1 self.without += 1
def _append_to_places_list_menu(self, place, idx):
"""
Create a list of places with index for the places list menu.
This menu is displayed over the map.
"""
self.placeslist.append([place, idx])
def _append_to_places_list(self, place, evttype, name, lat, def _append_to_places_list(self, place, evttype, name, lat,
longit, descr, center, year, icontype): longit, descr, center, year, icontype):
""" """
@ -1070,14 +1099,18 @@ class GeoView(HtmlView):
self.maxlon = tfb self.maxlon = tfb
def _set_icon(self, markertype, differtype, ptype): def _set_icon(self, markertype, differtype, ptype):
"""
Select the good icon depending on events.
If we have different events for one place, we use the default icon.
"""
if ptype != 1: # for places, we have no event type if ptype != 1: # for places, we have no event type
value = _icons.get(markertype.value, 'gramps-geo-default') value = _ICONS.get(markertype.value, 'gramps-geo-default')
else: else:
value = 'gramps-geo-default' value = 'gramps-geo-default'
if differtype: # in case multiple evts if differtype: # in case multiple evts
value = 'gramps-geo-default' # we use default icon. value = 'gramps-geo-default' # we use default icon.
if ( value == "gramps-geo-default" ): if ( value == "gramps-geo-default" ):
value = value.replace("default","\" + default_icon + \""); value = value.replace("default","\" + default_icon + \"")
ipath = os.path.join(const.ROOT_DIR, 'images/22x22/', '%s.png' % value ) ipath = os.path.join(const.ROOT_DIR, 'images/22x22/', '%s.png' % value )
upath = urlparse.urlunsplit(('file', '', upath = urlparse.urlunsplit(('file', '',
URL_SEP.join(ipath.split(os.sep)), '', '')) URL_SEP.join(ipath.split(os.sep)), '', ''))
@ -1089,7 +1122,8 @@ class GeoView(HtmlView):
""" """
last = "" last = ""
current = "" current = ""
indm = 0 self.placeslist = []
indm = ind = 0
divclose = True divclose = True
self.yearinmarker = [] self.yearinmarker = []
ininterval = False ininterval = False
@ -1148,11 +1182,15 @@ class GeoView(HtmlView):
2 : [mark[3], mark[4]], 2 : [mark[3], mark[4]],
}.get(formatype, mark[0]) }.get(formatype, mark[0])
if ( indm >= firstm ) and ( indm <= lastm ): if ( indm >= firstm ) and ( indm <= lastm ):
self._append_to_places_list_menu(mark[0], ind)
ind += 1
self.mapview.write("\n var point = new LatLonPoint") self.mapview.write("\n var point = new LatLonPoint")
self.mapview.write("(%s,%s);" % (mark[3], mark[4])) self.mapview.write("(%s,%s);" % (mark[3], mark[4]))
self.mapview.write("my_marker = new Marker(point);") self.mapview.write("my_marker = new Marker(point);")
self.mapview.write("gmarkers[%d]=my_marker;" % \ self.mapview.write("gmarkers[%d]=my_marker;" % \
(( indm - 1 ) % NB_MARKERS_PER_PAGE)) (( indm - 1 ) % NB_MARKERS_PER_PAGE))
self.mapview.write("my_marker.hover=1;")
self.mapview.write("my_marker.setLabel") self.mapview.write("my_marker.setLabel")
self.mapview.write("(\"%s\");" % mark[0]) self.mapview.write("(\"%s\");" % mark[0])
self.yearinmarker.append(mark[7]) self.yearinmarker.append(mark[7])
@ -1576,24 +1614,28 @@ class GeoView(HtmlView):
The second one is specific to GeoView. The second one is specific to GeoView.
""" """
# Get the default stylesheet. # Get the default stylesheet.
cpath = os.path.join(const.ROOT_DIR,
'data',
'%s' % self.stylesheet
)
dpath = urlparse.urlunsplit(('file', '',
URL_SEP.join(cpath.split(os.sep)),
'', ''))
dblp = "<link media=\"screen\" " dblp = "<link media=\"screen\" "
delp = "type=\"text/css\" rel=\"stylesheet\" />\n" delp = "type=\"text/css\" rel=\"stylesheet\" />\n"
dcp = "href=\"%s\" " % dpath if self.stylesheet != "":
cpath = os.path.join(const.ROOT_DIR,
'data',
'%s' % self.stylesheet
)
dpath = urlparse.urlunsplit(('file', '',
URL_SEP.join(cpath.split(os.sep)),
'', ''))
dcp = "href=\"%s\" " % dpath
# Get the GeoView stylesheet. # Get the GeoView stylesheet.
cpath = os.path.join(const.ROOT_DIR, cpath = os.path.join(const.ROOT_DIR,
'data', 'data',
'GeoView.css)' 'GeoView.css'
) )
gpath = urlparse.urlunsplit(('file', '', gpath = urlparse.urlunsplit(('file', '',
URL_SEP.join(cpath.split(os.sep)), URL_SEP.join(cpath.split(os.sep)),
'', '')) '', ''))
gcp = "href=\"%s\" " % gpath gcp = "href=\"%s\" " % gpath
return u'%s%s%s%s%s%s' % (dblp, dcp, delp, dblp, gcp, delp) if self.stylesheet != "":
return u'%s%s%s%s%s%s' % (dblp, dcp, delp, dblp, gcp, delp)
else:
return u'%s%s%s' % (dblp, gcp, delp)

View File

@ -36,15 +36,106 @@ GRAMPS. If not, see <http://www.gnu.org/licenses/>.
GeoView Styles GeoView Styles
----------------------------------------------------- */ ----------------------------------------------------- */
#openstreetmap
{
position:absolute;
border: 3px black solid;
margin-left:auto;
margin-right:auto;
}
#google
{
border: 3px black solid;
margin-left:auto;
margin-right:auto;
}
#openlayers
{
border: 3px black solid;
margin-left:auto;
margin-right:auto;
}
#microsoft
{
border: 3px black solid;
margin-left:auto;
margin-right:auto;
}
#yahoo
{
border: 3px black solid;
margin-left:auto;
margin-right:auto;
}
/* InfoBull */ /* InfoBull */
.geo-info { #geo-info {
white-space:nowrap; white-space:nowrap;
overflow:auto; overflow:auto;
width:105%; font-size:10pt;
max-height:150px; width=105%
max-height:2em;
} }
/* title and years selection */ /* title and years selection */
.geo-content { #geo-content {
font-size:10pt; font-size:10pt;
height:80px;
overflow:auto;
}
#geo-theplaces ul {
list-style-type: none;
font-size:16pt;
margin: 0;
padding: 0;
}
#geo-title
{
list-style-type: none;
margin-left: 5px;
}
#geo-thetitle:hover li { display: block; }
#geo-thetitle li {
display: none;
font-size:12pt;
font-weight: bold;
}
#geo-theplaces
{
position:absolute;
opacity:.90;
top:90px;
right:100px;
width: 380px;
border: 0px;
overflow:auto;
max-height:50%;
}
#geo-theplaces a
{
color: black;
display: block;
}
#geo-theplaces a:visited
{
color: black;
}
#geo-theplaces a:active
{
color: black;
}
#geo-theplaces a:hover
{
color: black;
} }

View File

@ -4164,9 +4164,7 @@ Marker.prototype.toGoogle = function() {
event_action = "click"; event_action = "click";
} }
GEvent.addListener(gmarker, event_action, function() { GEvent.addListener(gmarker, event_action, function() {
gmarker.openInfoWindowHtml(theInfo, { gmarker.openInfoWindowHtml(theInfo);
maxWidth: 100
});
}); });
} }