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)
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
#!/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)
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 "-------------------------------"
#!/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)
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()
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: