Navigation in the new pedegree window, along with messages.
svn: r373
This commit is contained in:
		@@ -1911,6 +1911,35 @@ def on_pv_n1_clicked(obj):
 | 
			
		||||
            change_active_person(mother)
 | 
			
		||||
            load_tree()
 | 
			
		||||
 | 
			
		||||
#-------------------------------------------------------------------------
 | 
			
		||||
#
 | 
			
		||||
#
 | 
			
		||||
#
 | 
			
		||||
#-------------------------------------------------------------------------
 | 
			
		||||
def childmenu (obj,event):
 | 
			
		||||
    if not active_person:
 | 
			
		||||
        return 1
 | 
			
		||||
    
 | 
			
		||||
    if event.type == GDK.BUTTON_PRESS and event.button == 3:
 | 
			
		||||
        myMenu = GtkMenu()
 | 
			
		||||
        for family in active_person.getFamilyList():
 | 
			
		||||
            for child in family.getChildList():
 | 
			
		||||
                menuitem = GtkMenuItem(Config.nameof(child))
 | 
			
		||||
                myMenu.append(menuitem)
 | 
			
		||||
                menuitem.set_data("person",child)
 | 
			
		||||
                menuitem.connect("activate",on_childmenu_changed)
 | 
			
		||||
                menuitem.show()
 | 
			
		||||
        myMenu.popup(None,None,None,0,0)
 | 
			
		||||
    elif event.type == GDK.ENTER_NOTIFY:
 | 
			
		||||
        statusbar.set_status(_("Right clicking will allow you to choose a child"))
 | 
			
		||||
        style = gtop.get_widget("canvas1")['style']
 | 
			
		||||
        obj.set(fill_color=style.fg[STATE_SELECTED])
 | 
			
		||||
    elif event.type == GDK.LEAVE_NOTIFY:
 | 
			
		||||
        style = gtop.get_widget("canvas1")['style']
 | 
			
		||||
        obj.set(fill_color=style.black)
 | 
			
		||||
        modify_statusbar()
 | 
			
		||||
    return 1
 | 
			
		||||
 | 
			
		||||
#-------------------------------------------------------------------------
 | 
			
		||||
#
 | 
			
		||||
#
 | 
			
		||||
@@ -1927,6 +1956,7 @@ def on_arrow_left_clicked(obj):
 | 
			
		||||
                menuitem.connect("activate",on_childmenu_changed)
 | 
			
		||||
                menuitem.show()
 | 
			
		||||
        myMenu.popup(None,None,None,0,0)
 | 
			
		||||
    return 1
 | 
			
		||||
 | 
			
		||||
#-------------------------------------------------------------------------
 | 
			
		||||
#
 | 
			
		||||
@@ -1938,6 +1968,7 @@ def on_childmenu_changed(obj):
 | 
			
		||||
    if person:
 | 
			
		||||
        change_active_person(person)
 | 
			
		||||
        load_tree()
 | 
			
		||||
    return 1
 | 
			
		||||
    
 | 
			
		||||
#-------------------------------------------------------------------------
 | 
			
		||||
#
 | 
			
		||||
@@ -2304,14 +2335,16 @@ def load_canvas():
 | 
			
		||||
    if active_person == None:
 | 
			
		||||
        return
 | 
			
		||||
    
 | 
			
		||||
    h = 0
 | 
			
		||||
    w = 0
 | 
			
		||||
    xpad = 15
 | 
			
		||||
 | 
			
		||||
    canvas = gtop.get_widget("canvas1")
 | 
			
		||||
    cx1,cy1,cx2,cy2 = canvas.get_allocation()
 | 
			
		||||
    root = canvas.root()
 | 
			
		||||
    
 | 
			
		||||
    h = 0
 | 
			
		||||
    w = 0
 | 
			
		||||
    xpad = 10
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    cw = (cx2-cx1-(2*xpad))
 | 
			
		||||
 | 
			
		||||
    style = canvas['style']
 | 
			
		||||
    font = style.font
 | 
			
		||||
 | 
			
		||||
@@ -2325,10 +2358,10 @@ def load_canvas():
 | 
			
		||||
            w = max(w,font.width("d. %s" % t.getDeath().getDate())+2*PAD)
 | 
			
		||||
            w = max(w,font.width("b. %s" % t.getBirth().getDate())+2*PAD)
 | 
			
		||||
 | 
			
		||||
    if 5*w < (cx2-xpad) and 24*h < cy2:
 | 
			
		||||
    if 5*w < cw and 24*h < cy2:
 | 
			
		||||
        gen = 31
 | 
			
		||||
        xdiv = 5.0
 | 
			
		||||
    elif 4*w < (cx2-xpad) and 12*h < cy2:
 | 
			
		||||
    elif 4*w < cw and 12*h < cy2:
 | 
			
		||||
        gen = 15
 | 
			
		||||
        xdiv = 4.0
 | 
			
		||||
    else:
 | 
			
		||||
@@ -2339,7 +2372,7 @@ def load_canvas():
 | 
			
		||||
        c.destroy()
 | 
			
		||||
    canvas.set_scroll_region(cx1,cy1,cx2,cy2)
 | 
			
		||||
 | 
			
		||||
    xincr = (cx2-xpad)/xdiv
 | 
			
		||||
    xincr = cw/xdiv
 | 
			
		||||
    yincr = cy2/32
 | 
			
		||||
 | 
			
		||||
    xfactor = [xpad] + [xincr+xpad]*2 + [xincr*2+xpad]*4 + [xincr*3+xpad]*8 + [xincr*4+xpad]*16
 | 
			
		||||
@@ -2349,6 +2382,23 @@ def load_canvas():
 | 
			
		||||
                yincr*13, yincr*15, yincr*17, yincr*19, yincr*21, yincr*23,
 | 
			
		||||
                yincr*25, yincr*27, yincr*29, yincr*31]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    if len(active_person.getFamilyList()) > 0:
 | 
			
		||||
        ypos = yfactor[0]+h/2.0
 | 
			
		||||
        item = root.add("line",
 | 
			
		||||
                        points=[xpad,ypos,xpad/4.0,ypos],
 | 
			
		||||
                        fill_color_gdk=style.black,
 | 
			
		||||
                        width_pixels=3,
 | 
			
		||||
                        arrow_shape_a=6,
 | 
			
		||||
                        arrow_shape_b=6,
 | 
			
		||||
                        arrow_shape_c=4,
 | 
			
		||||
                        last_arrowhead=1
 | 
			
		||||
                        )
 | 
			
		||||
        item.connect('event',childmenu)
 | 
			
		||||
        canvas_items = [item]
 | 
			
		||||
    else:
 | 
			
		||||
        canvas_items = []
 | 
			
		||||
 | 
			
		||||
    for i in range(gen):
 | 
			
		||||
        if list[i]:
 | 
			
		||||
            if i < int(gen/2):
 | 
			
		||||
@@ -2430,8 +2480,6 @@ def box_event(obj,event):
 | 
			
		||||
    if event.type == GDK._2BUTTON_PRESS:
 | 
			
		||||
        if event.button == 1 and event.type == GDK._2BUTTON_PRESS:
 | 
			
		||||
            load_person(obj.get_data('p'))
 | 
			
		||||
    elif event.type == GDK.BUTTON_PRESS and event.button == 3:
 | 
			
		||||
        on_arrow_left_clicked(obj)
 | 
			
		||||
    elif event.type == GDK.ENTER_NOTIFY:
 | 
			
		||||
        canvas = gtop.get_widget("canvas1")
 | 
			
		||||
        obj.raise_to_top()
 | 
			
		||||
@@ -2484,9 +2532,13 @@ def line_event(obj,event):
 | 
			
		||||
    elif event.type == GDK.ENTER_NOTIFY:
 | 
			
		||||
        canvas = gtop.get_widget("canvas1")
 | 
			
		||||
        obj.set(fill_color_gdk=canvas['style'].bg[STATE_SELECTED])
 | 
			
		||||
        name = Config.nameof(obj.get_data("p"))
 | 
			
		||||
        msg = _("Double clicking will make %s the active person") % name
 | 
			
		||||
        statusbar.set_status(msg)
 | 
			
		||||
    elif event.type == GDK.LEAVE_NOTIFY:
 | 
			
		||||
        canvas = gtop.get_widget("canvas1")
 | 
			
		||||
        obj.set(fill_color_gdk=canvas['style'].black)
 | 
			
		||||
        modify_statusbar()
 | 
			
		||||
 | 
			
		||||
#-------------------------------------------------------------------------
 | 
			
		||||
#
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user