Removed the AncestorGraph report

svn: r134
This commit is contained in:
Don Allingham 2001-06-14 17:18:20 +00:00
parent d204dd90fd
commit 68f4cef171

View File

@ -1,449 +0,0 @@
#
# Gramps - a GTK+/GNOME based genealogy program
#
# Copyright (C) 2000 Donald N. Allingham
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
"View/View an ancestor graph"
import RelLib
import os
import utils
from gtk import *
from gnome.ui import *
from libglade import *
import intl
_ = intl.gettext
col2person = {}
reportPerson = None
zoom = 1.0
boxwidth = 200
boxheight = 50
colsep = 30
shadow_offset = 5
topDialog = None
#-------------------------------------------------------------------------
#
#
#
#-------------------------------------------------------------------------
def report(database,active_person):
global glade_file
global col2person
global zoom
global reportPerson
global topDialog
zoom = 1.0
base = os.path.dirname(__file__)
glade_file = base + os.sep + "ancestorgraph.glade"
dic = {
"destroy_passed_object" : utils.destroy_passed_object,
"on_ok_clicked" : on_ok_clicked,
"on_personList_select_row" : on_personList_select_row
}
topDialog = GladeXML(glade_file,"graph")
topDialog.signal_autoconnect(dic)
top = topDialog.get_widget("graph")
topDialog.get_widget("backgroundcolor").set_i8(255,255,255,0)
topDialog.get_widget("boxcolor").set_i8(255,255,255,0)
topDialog.get_widget("textcolor").set_i8(0,0,0,0)
topDialog.get_widget("bordercolor").set_i8(0,0,0,0)
personList = topDialog.get_widget("personList")
nameList = database.getPersonMap().values()
nameList.sort(mysort)
reportPerson = active_person
if active_person != None:
name = active_person.getPrimaryName().getName()
topDialog.get_widget("selectedPerson").set_text(name)
col2person = {}
index = 0
for person in nameList:
name = person.getPrimaryName().getName()
birth = person.getBirth()
if birth != None:
bdate = birth.getDate()
else:
bdate = ""
personList.append([name,bdate])
col2person[index] = person
index = index + 1
top.show()
#-------------------------------------------------------------------------
#
#
#
#-------------------------------------------------------------------------
def on_personList_select_row(obj,a,b,c):
global reportPerson
global col2person
global topDialog
reportPerson = col2person[a]
name = reportPerson.getPrimaryName().getName()
topDialog.get_widget("selectedPerson").set_text(name)
#-------------------------------------------------------------------------
#
#
#
#-------------------------------------------------------------------------
def on_ok_clicked(obj):
global reportPerson
global colsep
global boxwidth
global shadow_offset
global glade_file
global topDialog
if reportPerson == None:
return
req_depth = topDialog.get_widget("generations").get_value_as_int()
font = topDialog.get_widget("fontpicker").get_font_name()
dic = { "destroy_passed_object" : utils.destroy_passed_object,
"on_zoomin_clicked" : on_zoomin_clicked,
"on_zoomout_clicked" : on_zoomout_clicked
}
window = GladeXML(glade_file,"display")
window.signal_autoconnect(dic)
displayWindow = window.get_widget("display")
canvas = window.get_widget("canvas")
rootGroup = canvas.root()
max_depth = min(determine_depth(reportPerson,0)+1,req_depth)
max_size = (2 ** (max_depth-1)) * (boxheight+colsep+shadow_offset)
x_size = (boxwidth + colsep + shadow_offset) * (max_depth)
x_size = x_size + 3 * shadow_offset
y_size = max_size + (2*boxheight)
canvas.set_usize(x_size, y_size)
canvas.set_scroll_region(0, 0,x_size, y_size)
# bkgclr = topDialog.get_widget("backgroundcolor").get_i8()
# txtclr = topDialog.get_widget("textcolor").get_i8()
# bdrclr = topDialog.get_widget("bordercolor").get_i8()
# boxclr = topDialog.get_widget("boxcolor").get_i8()
# bkgcolor = GdkColor(bkgclr[0],bkgclr[1],bkgclr[2])
# txtcolor = GdkColor(txtclr[0],txtclr[1],txtclr[2])
# bdrcolor = GdkColor(bdrclr[0],bdrclr[1],bdrclr[2])
# boxcolor = GdkColor(boxclr[0],boxclr[1],boxclr[2])
bkgcolor = "white"
txtcolor = "black"
bdrcolor = "black"
boxcolor = "white"
border = rootGroup.add("rect",
x1=0,
y1=0,
x2=x_size,
y2=y_size,
fill_color=bkgcolor,
outline_color=txtcolor)
draw(rootGroup,
reportPerson,
colsep,
(max_size+boxheight+shadow_offset)/2.0,
max_size/4.0,
1,
max_depth,
boxcolor,
txtcolor,
bdrcolor,
font)
displayWindow.show()
utils.destroy_passed_object(obj)
#-------------------------------------------------------------------------
#
# determine_depth
#
#-------------------------------------------------------------------------
def determine_depth(person, depth):
family = person.getMainFamily()
if family == None:
return depth
father = family.getFather()
mother = family.getMother()
father_depth = 0
mother_depth = 0
if father != None:
father_depth = determine_depth(father,depth+1)
if mother != None:
mother_depth = determine_depth(mother,depth+1)
if father_depth > mother_depth:
return father_depth
else:
return mother_depth
#-------------------------------------------------------------------------
#
#
#
#-------------------------------------------------------------------------
def on_zoomin_clicked(obj):
global zoom
zoom = zoom * 1.5
obj.set_pixels_per_unit(zoom)
#-------------------------------------------------------------------------
#
#
#
#-------------------------------------------------------------------------
def on_zoomout_clicked(obj):
global zoom
zoom = zoom * (2.0/3.0)
obj.set_pixels_per_unit(zoom)
#-------------------------------------------------------------------------
#
#
#
#-------------------------------------------------------------------------
def line(group,x1,y1,x2,y2):
global colsep
pts = []
pts.append(x1)
pts.append(y1)
pts.append(x1+(colsep/2.0))
pts.append(y1)
pts.append(x1+(colsep/2.0))
pts.append(y2)
pts.append(x2)
pts.append(y2)
group.add("line", points=pts, fill_color="black")
#-------------------------------------------------------------------------
#
#
#
#-------------------------------------------------------------------------
def draw(group,reportPerson,x,y,incr,cur_depth,max_depth,bkg,txt,bdr,font):
global boxwidth
global colsep
global shadow_offset
name = reportPerson.getPrimaryName().getName()
family = reportPerson.getMainFamily()
add_box(group,name,x,y,bkg,txt,bdr,font)
if family != None and cur_depth < max_depth:
father = family.getFather()
if father != None:
line(group,
x+boxwidth+shadow_offset,
y+(boxheight/2.0),
x+boxwidth+colsep,
y-incr+(boxheight/2.0))
draw(group,
father,
x+boxwidth+colsep,
y-incr,
incr/2.0,
cur_depth+1,
max_depth,
bkg,
txt,
bdr,
font)
mother = family.getMother()
if mother != None:
line(group,
x+boxwidth+shadow_offset,
y+(boxheight/2.0),
x+boxwidth+colsep,
y+incr+(boxheight/2.0))
draw(group,
mother,
x+boxwidth+colsep,
y+incr,
incr/2.0,
cur_depth+1,
max_depth,
bkg,
txt,
bdr,
font)
#-------------------------------------------------------------------------
#
#
#
#-------------------------------------------------------------------------
def add_box(parentgroup,mytext, x1, y1,bkg,txt,bdr,font):
global boxheight
global boxwidth
global colsep
global shadow_offset
pad = 3
group = parentgroup.add("group",x=x1,y=y1);
shadow = group.add("rect");
border = group.add("rect");
text = group.add("text",
text=mytext,
font=font,
x=pad,
y=boxheight/2.0,
fill_color=txt,
anchor=ANCHOR_WEST)
border.set(x1=0,
y1=0,
x2=boxwidth+pad,
y2=boxheight,
fill_color=bkg,
outline_color=bdr)
shadow.set(x1=shadow_offset,
y1=shadow_offset,
x2=boxwidth+pad+shadow_offset,
y2=boxheight+shadow_offset,
fill_color="gray",
outline_color="gray")
#-------------------------------------------------------------------------
#
#
#
#-------------------------------------------------------------------------
def mysort(first, second) :
name1 = first.getPrimaryName()
name2 = second.getPrimaryName()
if name1.getSurname() == name2.getSurname():
if name1.getFirstName() == name2.getFirstName():
return cmp(name1.getSuffix(), name2.getSuffix())
else:
return cmp(name1.getFirstName(), name2.getFirstName())
else:
return cmp(name1.getSurname(), name2.getSurname())
#------------------------------------------------------------------------
#
#
#
#------------------------------------------------------------------------
def get_description():
return _("Displays an ancestral tree graph")
def get_name():
return _("View/View an ancestor graph")
#------------------------------------------------------------------------
#
#
#
#------------------------------------------------------------------------
def get_xpm_image():
return [
"48 48 4 1",
" c None",
". c #FFFFFF",
"+ c #C0C0C0",
"@ c #000000",
" ",
" ",
" ",
" ++++++++++++++++++++++++++++++++++ ",
" +................................+ ",
" +....................@@@@@@......+ ",
" +.................@@@@@@@@@......+ ",
" +.................@..............+ ",
" +.............@@@@@@.............+ ",
" +...........@@@@@@@@.............+ ",
" +...........@.....@..............+ ",
" +...........@.....@@@@@@@@@......+ ",
" +...........@........@@@@@@......+ ",
" +.......@@@@@@...................+ ",
" +.....@@@@@@@@...................+ ",
" +.....@.....@........@@@@@@......+ ",
" +.....@.....@.....@@@@@@@@@......+ ",
" +.....@.....@.....@..............+ ",
" +.....@.....@@@@@@@@.............+ ",
" +.....@.......@@@@@@.............+ ",
" +.....@...........@..............+ ",
" +.....@...........@@@@@@@@@......+ ",
" +.....@..............@@@@@@......+ ",
" +.@@@@@@.........................+ ",
" +.@@@@@@.........................+ ",
" +.....@..............@@@@@@......+ ",
" +.....@...........@@@@@@@@@......+ ",
" +.....@...........@..............+ ",
" +.....@.......@@@@@@.............+ ",
" +.....@.....@@@@@@@@.............+ ",
" +.....@.....@.....@..............+ ",
" +.....@.....@.....@@@@@@@@@......+ ",
" +.....@.....@........@@@@@@......+ ",
" +.....@@@@@@@@...................+ ",
" +.......@@@@@@...................+ ",
" +...........@........@@@@@@......+ ",
" +...........@.....@@@@@@@@@......+ ",
" +...........@.....@..............+ ",
" +...........@@@@@@@@.............+ ",
" +.............@@@@@@.............+ ",
" +.................@..............+ ",
" +.................@@@@@@@@@......+ ",
" +....................@@@@@@......+ ",
" +................................+ ",
" ++++++++++++++++++++++++++++++++++ ",
" ",
" ",
" "]