chiark / gitweb /
changed graphs to manual dot file; added pictures; faffed about with text
[familyTree.git] / cgiFiles / smallGraph.py
index eefee42a34cb8e0e4745fff7b212ca50cc479b79..ee152694c8fbef00dbd99b89a55fcb5f560fad9f 100755 (executable)
@@ -2,93 +2,41 @@
 
 import cgi
 import cgitb
-
-import pygraph
-from pygraph.classes.graph import graph
-from pygraph.classes.digraph import digraph
-from pygraph.algorithms.searching import breadth_first_search
-from pygraph.readwrite.dot import write
-import gv
-import StringIO
+import make_dot as d
 
 cgitb.enable()
-def add_quotes(s):
-        return '\"'+str(s)+'\"'
-
 
 def make_graph(Self,parents,children,otherparents,spouses):
-       # Graph creation
-       gr = digraph()
-
-       node_attr = [('fontsize',8)]
-
-       # Add nodes and edges
-       gr.add_node(Self,node_attr)
+       d.start_dot()   
 
+       d.add_highlight(Self)
+       
+       countSame = 2;
+        for i in range(1,len(parents)):
+                if parents[i]==parents[i-1]:
+                        parents[1]=parents[1] + ' '+str(countSame)
+                        countSame = countSame +1
 
-       for p in parents:
-               if not gr.has_node(p):
-                       gr.add_node(p,node_attr)
-               if not gr.has_edge((p,Self)):
-                       gr.add_edge((p,Self))
-               
-       couples=[]
-       if len(parents)==2:
-               ps = (parents[0],parents[1])
-               if not gr.has_edge(ps):
-                       gr.add_edge(ps)
-                       attr = [('dir','none')]
-                       gr.add_edge_attributes(ps,attr)
-                       couples.append(ps)
+        d.add_marriage(parents[0],parents[1],[Self],1)
 
-       for i in range(len(children)):
-               if not gr.has_node(children[i]):
-                       gr.add_node(children[i],node_attr)
-               if not gr.has_edge ((Self,children[i])):
-                       gr.add_edge((Self,children[i]))
-               if not gr.has_node(otherparents[i]):
-                       gr.add_node(otherparents[i],node_attr)
-               if not gr.has_edge((otherparents[i],children[i])):
-                       gr.add_edge((otherparents[i],children[i]))
+       for i in range(len(otherparents)):
+                c = children[i]
+                op = otherparents[i]
+                d.add_marriage(Self,op,[c],1)
 
-               
-               if not gr.has_edge((otherparents[i],Self)):
-                       e = (otherparents[i],Self)
-                       attr = [('dir','none')]
-                       gr.add_edge(e)
-                       gr.add_edge_attributes(e,attr)
-                       couples.append(e)
+       for i in range(len(spouses)):
+                s = spouses[i]
+                d.add_marriage(Self,s,[],1)
 
-       for s in spouses:
-               if not gr.has_node(s):
-                       gr.add_node(s,node_attr)
-               if not gr.has_edge((s,Self)):
-                       e = (s,Self)
-                       attr = [('dir','none')]
-                        gr.add_edge(e)
-                        gr.add_edge_attributes(e,attr)
-                        couples.append(e)
 
+        d.subgraphs.append(children)
 
-
-        #Draw as jpg
-       dot = write(gr)
-       dot = dot[:-2]
+       d.add_subgraphs()
        
-       for couple in couples:
-               line = "\n{rank=same "+add_quotes(couple[0]) + ' '\
-                       +add_quotes(couple[1])+"}"
-
-               dot = dot + line
-
-       dot = dot + '\n}'
-       gvv = gv.readstring(dot)
-       gv.layout(gvv,'dot')
-
-       format = 'jpg'
+       d.end_dot()
+               
+       d.render_dot()
 
-       print "Content-type: image/" + format + "\n"
-       print gv.render(gvv,format)
 
 form = cgi.FieldStorage()
 
@@ -99,4 +47,3 @@ op = form.getlist('op')
 s = form.getlist('s')
 
 make_graph(Self,p,c,op,s)
-