# by moving to the cp position first, the connection's points get recalculated pos = obj.connections[8].pos con.move_handle(h, pos, 0, 0) h.connect(obj.connections[8]) # connect to mid-point if nodes.has_key(e.dest) : h = con.handles[-1] obj = nodes[e.dest] pos = obj.connections[8].pos con.move_handle(h, pos, 0, 0) h.connect (obj.connections[8]) # connect to mid-point if e.parms.has_key('label') : AddLabel (layer, e.LabelPos(), e.parms['label'], e.FontSize()) diagram = None # FIXME: get it if diagram : for n, o in nodes.iteritems() : diagram.update_connections(o) diagram.update_extents() return diagramData if __name__ == '__main__': # just testing at the moment nodes, edges = Parse(sys.argv[1]) for k, n in nodes.iteritems() : print "Name:", n.name, "Pos:", n.Pos(), "WxH:", n.Size() for e in edges : print e.src, "->", e.dest, e.LabelPos(), e.parms else : # run as a Dia plug-in import dia dia.register_import ("Graphviz Dot", "dot", ImportFile)
for s in class_map.keys () : c, o = class_map[s] print s, c, c.bases for b in c.bases : if class_map.has_key (b) : k, p = class_map[b] print c.id, "->", k.id con, h1, h2 = dia.get_object_type("UML - Generalization").create(0,0) layer.add_object (con) h1.connect (p.connections[6]) h2.connect (o.connections[1]) # ... and move appropriately # update placement depending on number of parents ? layer.update_extents() def import_files (sFile, diagramData) : # maybe we should select single file/directory, add inlude directories here files = glob.glob (os.path.dirname (sFile) + "/class*.xml") files.extend (glob.glob (os.path.dirname (sFile) + "/struct*.xml")) classes = GetClasses (files) return import_classes (classes, diagramData) def import_file (sFile, diagramData) : classes = GetClasses ([sFile]) return import_classes (classes, diagramData) dia.register_import("Dox2UML", "xml", import_file) dia.register_import("Dox2UML (multiple)", "xml", import_files) #dia.register_import("Dox2UML", "h", import_headers)
c = theLinks[s] for p in c.Parents(): o, h1, h2 = dia.get_object_type("UML - Generalization").create( 0, 0) layer.add_object(o) o2 = theObjects[p] h1.connect(o2.connections[6]) h2.connect(o1.connections[1]) # update placement depending on number of parents ? layer.update_extents() #dia.active_display().add_update_all() if __name__ == '__main__': Process(sys.argv[1]) for c in g_classes: if c.Name()[:2] != "__" and c.Name()[:5] != "std::": try: if c.IsClass(): c.Dump() except KeyError: pass else: try: import dia #dia.register_import("Cpp via GCC_XML", "cpp", ImportCpp) dia.register_import(_("XML from GCC_XML"), "xml", ImportXml) except ImportError: pass
c, o = class_map[s] print s, c, c.bases for b in c.bases: if class_map.has_key(b): k, p = class_map[b] print c.id, "->", k.id con, h1, h2 = dia.get_object_type( "UML - Generalization").create(0, 0) layer.add_object(con) h1.connect(p.connections[6]) h2.connect(o.connections[1]) # ... and move appropriately # update placement depending on number of parents ? layer.update_extents() def import_files(sFile, diagramData): # maybe we should select single file/directory, add inlude directories here files = glob.glob(os.path.dirname(sFile) + "/class*.xml") files.extend(glob.glob(os.path.dirname(sFile) + "/struct*.xml")) classes = GetClasses(files) return import_classes(classes, diagramData) def import_file(sFile, diagramData): classes = GetClasses([sFile]) return import_classes(classes, diagramData) dia.register_import("Dox2UML", "xml", import_file) dia.register_import("Dox2UML (multiple)", "xml", import_files) #dia.register_import("Dox2UML", "h", import_headers)
if sName[-1] == "z" : import gzip f = gzip.open(sName) else : f = open(sName) imp.Parse(f.read()) if len(sys.argv) > 2 : sys.stdout = open(sys.argv[2], "wb") imp.Dump() sys.exit(0) if __name__ == '__main__': Test() def import_svg(sFile, diagramData) : imp = Importer() f = open(sFile) imp.Parse(f.read()) return imp.Render(diagramData) def import_svgz(sFile, diagramData) : import gzip imp = Importer() f = gzip.open(sFile) imp.Parse(f.read()) return imp.Render(diagramData) import dia dia.register_import("SVG plain", "svg", import_svg) dia.register_import("SVG compressed", "svgz", import_svgz)
nodeType = dia.get_object_type('Flowchart - Box') x = 0 structs = parse_file(filename) oType = dia.get_object_type ("UML - Class") for [name, fields, methods] in structs: x += 10 obj, h1, h2 = oType.create (x,0) # p.x, p.y obj.properties["name"] = name dia_fields = [] dia_methods = [] for f in fields: #print f dia_fields.append((f[1],f[0],'','doc',0,0,0)) for m in methods: #print m dia_methods.append((m[1],m[0],'doc','',0,0,0,0,())) obj.properties["operations"] = dia_methods obj.properties["attributes"] = dia_fields layer.add_object(obj) if diagramData : diagramData.update_extents() #diagramData.flush() # work with bindings test #return data # run as a Dia plug-in dia.register_import ("c file to be convert", "c", ImportFile) dia.register_import ("c header file to be convert", "h", ImportFile)
for s in theLinks.keys() : o1 = theObjects[s] c = theLinks[s] for p in c.Parents() : o, h1, h2 = dia.get_object_type("UML - Generalization").create(0,0) layer.add_object(o) o2 = theObjects[p] h1.connect (o2.connections[6]) h2.connect (o1.connections[1]) # update placement depending on number of parents ? layer.update_extents() #dia.active_display().add_update_all() if __name__ == '__main__': Process(sys.argv[1]) for c in g_classes : if c.Name()[:2] != "__" and c.Name()[:5] != "std::" : try : if c.IsClass() : c.Dump() except KeyError : pass else : try : import dia #dia.register_import("Cpp via GCC_XML", "cpp", ImportCpp) dia.register_import("XML from GCC_XML", "xml", ImportXml) except ImportError : pass
pos = obj.connections[8].pos con.move_handle(h, pos, 0, 0) h.connect(obj.connections[8]) # connect to mid-point if e.dest in nodes: h = con.handles[-1] obj = nodes[e.dest] pos = obj.connections[8].pos con.move_handle(h, pos, 0, 0) h.connect(obj.connections[8]) # connect to mid-point if 'label' in e.parms: AddLabel(layer, e.LabelPos(), e.parms['label'], e.FontSize()) diagram = None # FIXME: get it if diagram: for n, o in nodes.items(): diagram.update_connections(o) diagram.update_extents() return diagramData if __name__ == '__main__': # just testing at the moment nodes, edges = Parse(sys.argv[1]) for k, n in nodes.items(): print("Name:", n.name, "Pos:", n.Pos(), "WxH:", n.Size()) for e in edges: print(e.src, "->", e.dest, e.LabelPos(), e.parms) else: # run as a Dia plug-in import dia dia.register_import(_("Graphviz Dot"), "dot", ImportFile)
f = open(sName) imp.Parse(f.read()) if len(sys.argv) > 2: sys.stdout = open(sys.argv[2], "wb") imp.Dump() sys.exit(0) if __name__ == '__main__': Test() def import_svg(sFile, diagramData): imp = Importer() f = open(sFile) imp.Parse(f.read()) return imp.Render(diagramData) def import_svgz(sFile, diagramData): import gzip imp = Importer() f = gzip.open(sFile) imp.Parse(f.read()) return imp.Render(diagramData) import dia dia.register_import(_("SVG plain"), "svg", import_svg) dia.register_import(_("SVG compressed"), "svgz", import_svgz)
nodeType = dia.get_object_type('Flowchart - Box') x = 0 y = 0 w = 20 h = 0.2 lines = file(sFile).readlines() lines = [l.strip() for l in lines if l.strip()] max_len = max([len(l) for l in lines]) box_width = max_len / 2.2 #w = max_len / 2.2 for line in lines: line = line.strip() print line y = y+1.5 obj, h1, h2 = nodeType.create(x-w/2, y-h/2) # Dot pos is center, Dia (usually) uses top/left obj.move_handle(h2, (x+w/2, y+h/2), 0, 0) # resize the object obj.properties["text"] = line layer.add_object(obj) obj.properties["elem_width"] = box_width obj.properties["padding"] = 0.10 obj.properties["elem_height"] = 1.00 # run as a Dia plug-in import dia dia.register_import ("lines of names", "txt", ImportFile)
y = (o.bounding_box.bottom + o.bounding_box.top) / 2 x = (right[o.properties['text'].value.text] + left[o.properties['text'].value.text]) / 2 o.move(x, y) # update connecting lines for l in self.objects: if l.type.name == 'Standard - ZigZagLine': h = l.handles[0] pos = h.connected_to.object.connections[2].pos l.move_handle(h, pos, 0, 0) h = l.handles[1] pos = h.connected_to.object.connections[13].pos l.move_handle(h, pos, 0, 0) def Render(self, data): layer = data.active_layer for o in self.objects: layer.add_object(o) data.update_extents() def import_csv(sFile, diagramData): imp = OrgchartImporter() f = open(sFile) imp.Parse(sFile) return imp.Render(diagramData) import dia dia.register_import("CSV Organization Chart", "csv", import_csv)
for o in self.objects: if 'text' in o.properties.keys() and o.properties['text'].value.text in right: y = (o.bounding_box.bottom + o.bounding_box.top)/2 x = (right[o.properties['text'].value.text] + left[o.properties['text'].value.text])/2 o.move(x,y) # update connecting lines for l in self.objects: if l.type.name == 'Standard - ZigZagLine': h = l.handles[0] pos = h.connected_to.object.connections[2].pos l.move_handle(h, pos, 0, 0) h = l.handles[1] pos = h.connected_to.object.connections[13].pos l.move_handle(h, pos, 0, 0) def Render(self,data) : layer = data.active_layer for o in self.objects : layer.add_object(o) data.update_extents () def import_csv(sFile, diagramData) : imp = OrgchartImporter() f = open(sFile) imp.Parse(sFile) return imp.Render(diagramData) import dia dia.register_import("CSV Organization Chart", "csv", import_csv);
supclass = cls.find("superClass") if supclass is not None: bases.append(transform_type(supclass, simple=False)) for base in bases: if base in boilerplate_classes: continue if base not in objects: objects[base] = ({}, create_stub_class(base.split(".")[-1], layer)) _, parent = objects[base] add_extends(obj, parent, layer) layer.update_extents() def load_xml(fn): return ET.parse(fn).getroot() def is_class(obj): return "UML - Class" == str(obj.type) def change_class_colors(html_col, layer=None): layer = layer or dia.active_display().diagram.data.active_layer color = parse_html_color(html_col) for o in (layer.objects[i] for i in xrange(len(layer.objects))): if not is_class(o): continue o.properties["fill_colour"] = color def import_file(fn, diagram_data): import_javadoc(load_xml(fn), diagram_data.active_layer) def load_file(fn): import_file(fn, dia.active_display().diagram.data) dia.register_import("xmldoclet", "xml", import_file)