Hopefully removed *.so files from the building of the tarball, added

GraphViz patches from Alexandre Duret-Lutz.


svn: r1129
This commit is contained in:
Don Allingham 2002-09-04 12:54:38 +00:00
parent 8ccfd0438b
commit 9d94d34a1f
6 changed files with 138 additions and 102 deletions

View File

@ -1,5 +1,5 @@
%define ver 0.8.0 %define ver 0.8.0
%define rel 1 %define rel pl1
%define prefix /usr %define prefix /usr
Summary: Genealogical Research and Analysis Management Programming System. Summary: Genealogical Research and Analysis Management Programming System.

View File

@ -39,7 +39,7 @@ import GTK
import gtk import gtk
import gnome.ui import gnome.ui
import libglade import libglade
from gnome.config import * import gnome.config
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
@ -228,10 +228,10 @@ def loadConfig(call):
lastfile = get_string("/gramps/data/LastFile") lastfile = get_string("/gramps/data/LastFile")
usetabs = get_bool("/gramps/config/UseTabs") usetabs = get_bool("/gramps/config/UseTabs")
uselds = get_bool("/gramps/config/UseLDS") uselds = get_bool("/gramps/config/UseLDS")
ac = get_bool("/gramps/config/DisableAutoComplete") ac = get_bool("/gramps/config/DisableAutoComplete",0)
mediaref = get_bool("/gramps/config/MakeReference") mediaref = get_bool("/gramps/config/MakeReference",1)
globalprop = get_bool("/gramps/config/DisplayGlobal") globalprop = get_bool("/gramps/config/DisplayGlobal",1)
localprop = get_bool("/gramps/config/DisplayLocal") localprop = get_bool("/gramps/config/DisplayLocal",1)
calendar = get_bool("/gramps/config/ShowCalendar") calendar = get_bool("/gramps/config/ShowCalendar")
usevc = get_bool("/gramps/config/UseVersionControl") usevc = get_bool("/gramps/config/UseVersionControl")
vc_comment = get_bool("/gramps/config/UseComment") vc_comment = get_bool("/gramps/config/UseComment")
@ -241,7 +241,7 @@ def loadConfig(call):
index_visible = get_bool("/gramps/config/IndexVisible") index_visible = get_bool("/gramps/config/IndexVisible")
show_detail = get_bool("/gramps/config/ShowDetail") show_detail = get_bool("/gramps/config/ShowDetail")
status_bar = get_int("/gramps/config/StatusBar") status_bar = get_int("/gramps/config/StatusBar")
t = get_int("/gramps/config/ToolBar") t = get_int("/gramps/config/ToolBar",2)
if t == 0: if t == 0:
toolbar = 2 toolbar = 2
else: else:
@ -250,7 +250,7 @@ def loadConfig(call):
attr_name = get_string("/gramps/config/DisplayAttrName") attr_name = get_string("/gramps/config/DisplayAttrName")
hide_altnames = get_bool("/gramps/config/DisplayAltNames") hide_altnames = get_bool("/gramps/config/DisplayAltNames")
autoload = get_bool("/gramps/config/autoLoad") autoload = get_bool("/gramps/config/autoLoad",0)
autosave_int = get_int("/gramps/config/autoSaveInterval") autosave_int = get_int("/gramps/config/autoSaveInterval")
dateFormat = get_int("/gramps/config/dateFormat") dateFormat = get_int("/gramps/config/dateFormat")
dateEntry = get_int("/gramps/config/dateEntry") dateEntry = get_int("/gramps/config/dateEntry")
@ -323,60 +323,12 @@ def loadConfig(call):
if attr_name == None: if attr_name == None:
attr_name = "" attr_name = ""
if autoload == None: autocomp = not ac
autoload = 1
if autosave_int == None:
autosave_int = 0
if mediaref == None:
mediaref = 1
if globalprop == None:
globalprop = 1
if localprop == None:
localprop =1
if usetabs == None:
usetabs = 0
if uselds == None:
uselds = 0
if ac == None:
autocomp = 1
else:
autocomp = not ac
if calendar == None:
calendar = 0
if usevc == None:
usevc = 0
if vc_comment == None:
vc_comment = 0
if uncompress == None:
uncompress = 0
if id_visible == None:
id_visible = 0
if id_edit == None:
id_edit = 0
if index_visible == None:
index_visible = 0
if show_detail == None:
show_detail = 0
if status_bar == None:
status_bar = 0
if toolbar == None:
toolbar = 2
if hide_altnames == None:
hide_altnames = 0
if dateFormat == None:
dateFormat = 0
if dateEntry == None:
dateEntry = 0
set_format_code(dateFormat) set_format_code(dateFormat)
Date.entryCode = dateEntry Date.entryCode = dateEntry
if lastnamegen == None or lastnamegen == 0: if _name_format == 0:
lastnamegen = 0
if _name_format == None or _name_format == 0:
_name_format = 0
nameof = Utils.normal_name nameof = Utils.normal_name
else: else:
nameof = Utils.phonebook_name nameof = Utils.phonebook_name
@ -386,6 +338,33 @@ def loadConfig(call):
make_path(os.path.expanduser("~/.gramps/plugins")) make_path(os.path.expanduser("~/.gramps/plugins"))
make_path(os.path.expanduser("~/.gramps/templates")) make_path(os.path.expanduser("~/.gramps/templates"))
def get_string(value,defval=""):
v = gnome.config.get_string(value)
if v == None:
return defval
else:
return v
def get_bool(key,defval=0):
v = gnome.config.get_bool(key)
if v:
return v
else:
return defval
def get_int(key,defval=0):
v = gnome.config.get_int(key)
if v:
return v
else:
return defval
def set_bool(key,value):
gnome.config.set_bool(key,value)
def set_string(key,value):
gnome.config.set_string(key,value)
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
# #

View File

@ -2183,7 +2183,6 @@ class GrampsDB(Persistent):
else: else:
source = Source() source = Source()
map[idVal] = self.addSource(source) map[idVal] = self.addSource(source)
self.sourceTable[map[idVal]] = source.getDisplayInfo()
return source return source
def addSourceNoMap(self,source,index): def addSourceNoMap(self,source,index):
@ -2203,7 +2202,6 @@ class GrampsDB(Persistent):
else: else:
source = Source() source = Source()
self.addSourceNoMap(source,val) self.addSourceNoMap(source,val)
self.sourceTable[val] = source.getDisplayInfo()
return source return source
def addObject(self,object): def addObject(self,object):
@ -2334,7 +2332,10 @@ class GrampsDB(Persistent):
return self.sourceTable[key] return self.sourceTable[key]
def getSource(self,key): def getSource(self,key):
return self.sourceMap[key] if self.sourceMap.has_key(key):
return self.sourceMap[key]
else:
return None
def buildSourceDisplay(self,nkey,okey=None): def buildSourceDisplay(self,nkey,okey=None):
if nkey != okey and okey != None: if nkey != okey and okey != None:

View File

@ -32,6 +32,8 @@ import time
import shutil import shutil
import os import os
from gnome.ui import GnomeErrorDialog
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
# load GRAMPS libraries # load GRAMPS libraries
@ -71,7 +73,6 @@ def exportData(database, filename, callback):
g = XmlWriter(database,callback,0,compress) g = XmlWriter(database,callback,0,compress)
g.write(filename) g.write(filename)
except: except:
from gnome.ui import GnomeErrorDialog
import DisplayTrace import DisplayTrace
DisplayTrace.DisplayTrace() DisplayTrace.DisplayTrace()
@ -295,6 +296,12 @@ class XmlWriter:
self.g.write(" <sources>\n") self.g.write(" <sources>\n")
for key in self.db.getSourceKeys(): for key in self.db.getSourceKeys():
source = self.db.getSource(key) source = self.db.getSource(key)
if not source:
d = self.db.getSourceDisplay(key)
GnomeErrorDialog("Database inconsistency found with sources\n"
"Index found for %s (%s)\n"
"but not included in tables - attempting to fix" % (d[0],d[1]))
continue
if self.callback and count % delta == 0: if self.callback and count % delta == 0:
self.callback(float(count)/float(total)) self.callback(float(count)/float(total))
count = count + 1 count = count + 1

View File

@ -92,7 +92,7 @@ startup = 1
# #
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
progName = "GRAMPS" progName = "GRAMPS"
version = "0.8.0-1" version = "0.8.0-pl1"
copyright = "© 2001-2002 Donald N. Allingham" copyright = "© 2001-2002 Donald N. Allingham"
authors = ["Donald N. Allingham", "David Hampton","Donald A. Peterson"] authors = ["Donald N. Allingham", "David Hampton","Donald A. Peterson"]
comments = _("GRAMPS (Genealogical Research and Analysis " comments = _("GRAMPS (Genealogical Research and Analysis "

View File

@ -165,6 +165,14 @@ class GraphVizDialog(ReportDialog):
_("Non-birth relationships will show up " _("Non-birth relationships will show up "
"as dashed lines in the graph.")) "as dashed lines in the graph."))
self.show_families_cb = gtk.GtkCheckButton(_("Show family nodes"))
self.show_families_cb.set_active(0)
self.add_frame_option(_("GraphViz Options"),
'',
self.show_families_cb,
_("Families will show up as circles, linked"
"to parents and children."))
tb_margin_adj = gtk.GtkAdjustment(value=0.5, lower=0.25, tb_margin_adj = gtk.GtkAdjustment(value=0.5, lower=0.25,
upper=100.0, step_incr=0.25) upper=100.0, step_incr=0.25)
lr_margin_adj = gtk.GtkAdjustment(value=0.5, lower=0.25, lr_margin_adj = gtk.GtkAdjustment(value=0.5, lower=0.25,
@ -218,7 +226,7 @@ class GraphVizDialog(ReportDialog):
"""Do Nothing. This document will be created in the """Do Nothing. This document will be created in the
make_report routine.""" make_report routine."""
pass pass
#------------------------------------------------------------------------ #------------------------------------------------------------------------
# #
# Functions related to setting up the dialog window # Functions related to setting up the dialog window
@ -248,7 +256,8 @@ class GraphVizDialog(ReportDialog):
self.adoptionsdashed = self.adoptionsdashed_cb.get_active() self.adoptionsdashed = self.adoptionsdashed_cb.get_active()
self.hpages = self.hpages_sb.get_value_as_int() self.hpages = self.hpages_sb.get_value_as_int()
self.vpages = self.vpages_sb.get_value_as_int() self.vpages = self.vpages_sb.get_value_as_int()
self.show_families = self.show_families_cb.get_active()
#------------------------------------------------------------------------ #------------------------------------------------------------------------
# #
# Functions related to creating the actual report document. # Functions related to creating the actual report document.
@ -266,83 +275,108 @@ class GraphVizDialog(ReportDialog):
write_dot(file, ind_list, self.orien, width, height, write_dot(file, ind_list, self.orien, width, height,
self.tb_margin, self.lr_margin, self.hpages, self.tb_margin, self.lr_margin, self.hpages,
self.vpages, self.includedates, self.includeurl, self.vpages, self.includedates, self.includeurl,
self.colorize, self.adoptionsdashed, self.arrowheadstyle, self.arrowtailstyle) self.colorize, self.adoptionsdashed, self.arrowheadstyle,
self.arrowtailstyle, self.show_families)
#------------------------------------------------------------------------ #------------------------------------------------------------------------
# #
# #
# #
#------------------------------------------------------------------------ #------------------------------------------------------------------------
def report(database,person): def report(database,person):
GraphVizDialog(database,person) GraphVizDialog(database,person)
#------------------------------------------------------------------------ #------------------------------------------------------------------------
# #
# #
# #
#------------------------------------------------------------------------ #------------------------------------------------------------------------
def write_dot(file, ind_list, orien, width, height, tb_margin, def write_dot(file, ind_list, orien, width, height, tb_margin,
lr_margin, hpages, vpages, includedates, includeurl, lr_margin, hpages, vpages, includedates, includeurl,
colorize, adoptionsdashed, arrowheadstyle, arrowtailstyle): colorize, adoptionsdashed, arrowheadstyle, arrowtailstyle,
show_families):
file.write("digraph g {\n") file.write("digraph g {\n")
file.write("bgcolor=white;\n") file.write("bgcolor=white;\n")
file.write("rankdir=LR;\n") file.write("rankdir=LR;\n")
file.write("center=1;\n") file.write("center=1;\n")
file.write("margin=0.5;\n") file.write("margin=0.5;\n")
file.write("ratio=fill;\n") file.write("ratio=fill;\n")
file.write("size=\"%3.1fin,%3.1fin\";\n" % ((width*hpages)-(lr_margin*2)-((hpages-1)*1.0), file.write("size=\"%3.1f,%3.1f\";\n" % ((width*hpages)-(lr_margin*2)-((hpages-1)*1.0),
(height*vpages)-(tb_margin*2)-((vpages-1)*1.0))) (height*vpages)-(tb_margin*2)-((vpages-1)*1.0)))
file.write("page=\"%3.1fin,%3.1fin\";\n" % (width,height)) file.write("page=\"%3.1f,%3.1f\";\n" % (width,height))
if orien == PAPER_LANDSCAPE: if orien == PAPER_LANDSCAPE:
file.write("rotate=90;\n") file.write("rotate=90;\n")
if len(ind_list) > 1: if len(ind_list) > 1:
dump_index(ind_list,file,includedates,includeurl,colorize) dump_index(ind_list,file,includedates,includeurl,colorize,
dump_person(ind_list,file,adoptionsdashed,arrowheadstyle,arrowtailstyle) arrowheadstyle,arrowtailstyle,show_families)
dump_person(ind_list,file,adoptionsdashed,arrowheadstyle,
arrowtailstyle,show_families)
file.write("}\n") file.write("}\n")
file.close() file.close()
#------------------------------------------------------------------------ #------------------------------------------------------------------------
# #
# #
# #
#------------------------------------------------------------------------ #------------------------------------------------------------------------
def dump_person(person_list,file,adoptionsdashed,arrowheadstyle,arrowtailstyle): def dump_person(person_list,file,adoptionsdashed,arrowheadstyle,
arrowtailstyle,show_families):
for person in person_list: for person in person_list:
pid = string.replace(person.getId(),'-','_') pid = string.replace(person.getId(),'-','_')
family, mrel, frel = person.getMainParentsRel() for family, mrel, frel in person.getParentList():
if family == None: father = family.getFather()
continue mother = family.getMother()
father = family.getFather() fadopted = frel != _("Birth")
if father and father in person_list: madopted = mrel != _("Birth")
fid = string.replace(father.getId(),'-','_') if show_families:
file.write('p%s -> p%s [' % (pid, fid)) # Link to the family node.
file.write('arrowhead=%s, arrowtail=%s, ' % (arrowheadstyle, arrowtailstyle)) famid = string.replace(family.getId(),'-','_')
if adoptionsdashed and frel != _("Birth"): file.write('p%s -> f%s [' % (pid, famid))
file.write('style=dashed') file.write('arrowhead=%s, arrowtail=%s, ' %
(arrowheadstyle, arrowtailstyle))
if adoptionsdashed and (fadopted or madopted):
file.write('style=dashed')
else:
file.write('style=solid')
file.write('];\n')
else: else:
file.write('style=solid') # Link to the parents' nodes directly.
file.write('];\n') if father and father in person_list:
mother = family.getMother() fid = string.replace(father.getId(),'-','_')
if mother and mother in person_list: file.write('p%s -> p%s [' % (pid, fid))
mid = string.replace(mother.getId(),'-','_') file.write('arrowhead=%s, arrowtail=%s, ' %
file.write('p%s -> p%s [' % (pid, mid)) (arrowheadstyle, arrowtailstyle))
file.write('arrowhead=%s, arrowtail=%s, ' % (arrowheadstyle, arrowtailstyle)) if adoptionsdashed and fadopted:
if adoptionsdashed and mrel != _("Birth"): file.write('style=dashed')
file.write('style=dashed') else:
else: file.write('style=solid')
file.write('style=solid') file.write('];\n')
file.write('];\n') if mother and mother in person_list:
mid = string.replace(mother.getId(),'-','_')
file.write('p%s -> p%s [' % (pid, mid))
file.write('arrowhead=%s, arrowtail=%s, ' %
(arrowheadstyle, arrowtailstyle))
if adoptionsdashed and madopted:
file.write('style=dashed')
else:
file.write('style=solid')
file.write('];\n')
#------------------------------------------------------------------------ #------------------------------------------------------------------------
# #
# #
# #
#------------------------------------------------------------------------ #------------------------------------------------------------------------
def dump_index(person_list,file,includedates,includeurl,colorize): def dump_index(person_list,file,includedates,includeurl,colorize,
arrowheadstyle,arrowtailstyle,show_families):
# The list of families for which we have output the node, so we
# don't do it twice.
families_done = []
for person in person_list: for person in person_list:
# Output the person's node.
label = person.getPrimaryName().getName() label = person.getPrimaryName().getName()
id = string.replace(person.getId(),'-','_') id = string.replace(person.getId(),'-','_')
if includedates: if includedates:
@ -367,10 +401,25 @@ def dump_index(person_list,file,includedates,includeurl,colorize):
else: else:
file.write('color=black, ') file.write('color=black, ')
file.write('fontname="Arial", label="%s"];\n' % label) file.write('fontname="Arial", label="%s"];\n' % label)
# Output families's nodes.
if show_families:
family_list = person.getFamilyList()
for fam in family_list:
fid = string.replace(fam.getId(),'-','_')
if fam not in families_done:
file.write('f%s [shape=circle, label="", ' % fid)
file.write('weight=8, height=.3];\n')
# Link this person to all his/her families.
file.write('f%s -> p%s [' % (fid, id))
file.write('arrowhead=%s, arrowtail=%s, ' %
(arrowheadstyle, arrowtailstyle))
file.write('style=solid];\n')
#------------------------------------------------------------------------ #------------------------------------------------------------------------
# #
# #
# #
#------------------------------------------------------------------------ #------------------------------------------------------------------------
def get_description(): def get_description():