import cgitb
import gv
import re
+import sys
+sys.path.append('/home/naath/familyTreeProject/familyTree')
+import askQuestion as aQ
+
cgitb.enable()
def add_quotes(s):
def end_dot():
global dot
+
dot = dot + "}"
def start_dot(fs):
edges=[]
cNodes={}
dot = "digraph G{\n"
- dot = dot + "ranksep = 0.5 nodesep = 0\n"
+ dot = dot + "ranksep = 0.2 nodesep = 0\n"
subgraphs=[]
set_attr(fs)
def add_highlight(name):
- add_node(name,highlight_attr)
+ global dot
-def add_person(name):
- add_node(name,person_attr)
+ add_person(name)
+ dot = dot +'\n'\
+ 'subgraph clusterhl {'+add_quotes(name)+';\n'
+ for a in highlight_attr:
+ dot = dot + a[0] + '=' +a[1] +';\n'
+ dot = dot + '}'
+
+def add_person(name):
+ try:
+ k=aQ.isKing(name)
+ except:
+ k=0
+ ln = name.replace(', ','\\n')
+ ln = ln.replace(',','\\n')
+ ln = ln.replace(' ','\\n')
+ myLabel = '"'+str(ln)+'"'
+
+ if k==1:
+ add_node(name,king_attr+[('label',myLabel)])
+ else:
+ add_node(name,person_attr+[('label',myLabel)])
def add_spot(name):
add_node(name,spot_attr)
def set_attr(fs):
global person_attr
global highlight_attr
+ global king_attr
global spot_attr
global edge_attr
global invis_attr
global debug_attr
global debug_edge_attr
zero_size = [('width','0'),('height','0')]
- person_attr = [('fontsize',str(fs)),('shape','plaintext')] + zero_size
- highlight_attr = person_attr + \
- [('fontcolor','red'),('shape','box'),('color','red')]
+ person_attr = [('fontsize',str(fs))]+\
+ [('shape','plaintext'),('margin','0.1'),\
+ ('style','filled'),('fillcolor','white')] +\
+ zero_size
+ highlight_attr = \
+ [('shape','box'),('color','red'),('style','filled')]
+ king_attr = person_attr +\
+ [('fontcolor','purple4'),('shape','house'),('color','purple4')]
debug_attr = person_attr + [('fontcolor','green')]
spot_attr = [('shape','point')] + zero_size
edge_attr = [('len','0'),('arrowsize','0.5')]
return attr_str
def render_dot():
+
+ f = open('tempfile','w')
+ f.write(dot)
+ f.close
+
gvv = gv.readstring(dot)
gv.layout(gvv,'dot')