def _read(self, string="", fname=""):
     """ Reads a graph from string, file or stdin """
     if string:
         self.handle = gv.readstring(string)
     elif fname == "stdin":
         data = sys.stdin.read()
         self.handle = gv.readstring(data)
     else:
         self.handle = gv.read(fname)
         # gv returns None if eg. the input does not exist
         if not self.handle:
             raise ValueError("Error with file " + fname)
Exemple #2
0
def preprocess(fname):
    graph_handle = gv.read(fname)
    txt = open(fname).read()
    targets = []

    # Replace the generated node names with their label. CMake generates a graph
    # like this:
    #
    # "node0" [ label="KF5DNSSD" shape="polygon"];
    # "node1" [ label="Qt5::Network" shape="ellipse"];
    # "node0" -> "node1"
    #
    # And we turn it into this:
    #
    # "KF5DNSSD" [ label="KF5DNSSD" shape="polygon"];
    # "Qt5::Network" [ label="Qt5::Network" shape="ellipse"];
    # "KF5DNSSD" -> "Qt5::Network"
    #
    # Using real framework names as labels makes it possible to merge multiple
    # .dot files.
    for node_handle in gvutils.get_node_list(graph_handle):
        node = gvutils.Node(node_handle)
        label = node.label.replace("KF5::", "")
        if node.shape in TARGET_SHAPES:
            targets.append(label)
        txt = txt.replace('"' + node.name + '"', '"' + label + '"')

    # Sometimes cmake will generate an entry for the target alias, something
    # like this:
    #
    # "node9" [ label="KParts" shape="polygon"];
    # ...
    # "node15" [ label="KF5::KParts" shape="ellipse"];
    # ...
    #
    # After our node renaming, this ends up with a second "KParts" node
    # definition, which we need to get rid of.
    for target in targets:
        rx = r' *"' + target + '".*label="KF5::' + target + '".*shape="ellipse".*;'
        txt = re.sub(rx, '', txt)
    return txt
def preprocess(fname):
    graph_handle = gv.read(fname)
    txt = open(fname).read()
    targets = []

    # Replace the generated node names with their label. CMake generates a graph
    # like this:
    #
    # "node0" [ label="KF5DNSSD" shape="polygon"];
    # "node1" [ label="Qt5::Network" shape="ellipse"];
    # "node0" -> "node1"
    #
    # And we turn it into this:
    #
    # "KF5DNSSD" [ label="KF5DNSSD" shape="polygon"];
    # "Qt5::Network" [ label="Qt5::Network" shape="ellipse"];
    # "KF5DNSSD" -> "Qt5::Network"
    #
    # Using real framework names as labels makes it possible to merge multiple
    # .dot files.
    for node_handle in gvutils.get_node_list(graph_handle):
        node = gvutils.Node(node_handle)
        label = node.label.replace("KF5::", "")
        if node.shape in TARGET_SHAPES:
            targets.append(label)
        txt = txt.replace('"' + node.name + '"', '"' + label + '"')

    # Sometimes cmake will generate an entry for the target alias, something
    # like this:
    #
    # "node9" [ label="KParts" shape="polygon"];
    # ...
    # "node15" [ label="KF5::KParts" shape="ellipse"];
    # ...
    #
    # After our node renaming, this ends up with a second "KParts" node
    # definition, which we need to get rid of.
    for target in targets:
        rx = r' *"' + target + '".*label="KF5::' + target + '".*shape="ellipse".*;'
        txt = re.sub(rx, '', txt)
    return txt
Exemple #4
0
#!/usr/bin/python

import gv

g = gv.digraph("G")
print gv.setv(g, "aaa", "xxx")
print gv.getv(g, "aaa")
n = gv.node(g, "hello")
print gv.getv(n, "label")
print gv.setv(n, "aaa", "xxx")
print gv.getv(n, "aaa")
m = gv.node(g, "world")
print gv.getv(m, "aaa")
e = gv.edge(n, m)
print gv.setv(e, "aaa", "xxx")
print gv.getv(e, "aaa")
gv.rm(e)
gv.rm(m)
gv.rm(n)
gv.rm(g)

g = gv.readstring("digraph G {a->b}")
gv.rm(g)

g = gv.read("hello.gv")
gv.layout(g, "dot")
gv.render(g, "png", "hello.png")
gv.rm(g)
Exemple #5
0
     i = 0
     for tk in st.keys():
         t = agt[tk]
         tree_nodes = t.preorder()
         for n in tree_nodes:
             n._stability = min(st[tk][tree_nodes.index(n)])
         #print t.dot_preaggregate(ts[tk]['res_c'],stability_highlight,"Node")
         
         fwrite = open("%s.%s.dot"%(options.input.replace(".txt",''),i),"w")
         fwrite.write(t.dot_preaggregate(ts[i]['res_c'],options.shighlight,options.ahighlight))
         fwrite.close()
         try:
             dot_file = "%s.%s.dot"%(options.input.replace(".txt",''),i)
             print dot_file
             
             gvv = gv.read(dot_file)
             gv.layout(gvv,'dot')
           
             new_file_gv = "%s.%s_%s_%s.png"%(options.input.replace(".txt",''),i,options.aggregate,sname)
             list_files.append(new_file_gv)
             gv.render(gvv,'png',new_file_gv)
         except Exception, e:
             print e
             print "No Rendering"
         i= i +1
     return (list_res,list_files)
             
    
 #if not gui
 for (res_t,res_c) in list_res:            
     print "-------------------------------"
Exemple #6
0
#!/usr/bin/python

import gv

g = gv.digraph("G")
print gv.setv(g,"aaa","xxx")
print gv.getv(g,"aaa")
n = gv.node(g,"hello")
print gv.getv(n,"label")
print gv.setv(n,"aaa","xxx")
print gv.getv(n,"aaa")
m = gv.node(g,"world")
print gv.getv(m,"aaa")
e = gv.edge(n,m)
print gv.setv(e,"aaa","xxx")
print gv.getv(e,"aaa")
gv.rm(e)
gv.rm(m)
gv.rm(n)
gv.rm(g)

g = gv.readstring("digraph G {a->b}")
gv.rm(g)

g = gv.read("hello.gv")
gv.layout(g, "dot")
gv.render(g, "png", "hello.png")
gv.rm(g)
Exemple #7
0
		for i in range(0,100,1):
			m = gv.node(g,str(i))
			nodes.append(m)
			e = gv.edge(n,m)
		gv.layout(g, "dot")
		
		gv.render(g,"xdot","test.xdot")
		for node in nodes:
			print "pos=",gv.getv(node,"pos")
		#print "pos=",gv.getv(n,"pos")
		#print "pos=",gv.getv(e,"pos")
	
	
	if 0:
		g=gv.digraph("G")
		g=gv.read("test.dot")
		gv.layout(g, "dot")
		gv.render(g, "gif","test.gif")
		
	if 0:
		def main():
			app=QApplication()
			win= ()
			win.show()
			app.connect(app, SIGNAL("lastWindowClosed()")
			               , app
			               , SLOT("quit()")
			               )
			app.exec_loop()
		main()
Exemple #8
0
            nh = gv.firsthead(n)
            while gv.ok(nh):
                if gv.getv(nh, 'color') != 'green':
                    gv.setv(nh, 'color', 'green')
                    ok = True
                nh = gv.nexthead(n, nh)
        n = gv.nextnode(gr, n)
    return ok

if __name__ == "__main__":
    name = sys.argv[1]
    if name[-4:] != '.dot':
        print "wrong name", name
        exit
    name = name[:-4]
    gr = gv.read(name + '.dot')
    m = gv.findnode(gr, 'main')
    gv.setv(m, 'color', 'green')
    while mark():
        pass
    n = gv.firstnode(gr)
    while gv.ok(n):
        if gv.getv(n, 'color') != 'green':
            gv.setv(n, 'fillcolor', 'red')
            gv.setv(n, 'style', 'filled')
        in_degree = 0
        e = gv.firstin(n)
        while gv.ok(e):
            in_degree += 1
            e = gv.nextin(n, e)
        if in_degree == 1: