253 return |
253 return |
254 |
254 |
255 # step 1: build all classes found in the modules |
255 # step 1: build all classes found in the modules |
256 classesFound = False |
256 classesFound = False |
257 |
257 |
258 for modName in list(modules.keys()): |
258 for modName in modules: |
259 module = modules[modName] |
259 module = modules[modName] |
260 for cls in list(module.classes.keys()): |
260 for cls in module.classes: |
261 classesFound = True |
261 classesFound = True |
262 self.__addLocalClass(cls, module.classes[cls], 0, 0) |
262 self.__addLocalClass(cls, module.classes[cls], 0, 0) |
263 if not classesFound and not subpackages: |
263 if not classesFound and not subpackages: |
264 ct = QGraphicsTextItem(None) |
264 ct = QGraphicsTextItem(None) |
265 self.scene.addItem(ct) |
265 self.scene.addItem(ct) |
275 |
275 |
276 # step 2: build the class hierarchies |
276 # step 2: build the class hierarchies |
277 routes = [] |
277 routes = [] |
278 nodes = [] |
278 nodes = [] |
279 |
279 |
280 for modName in list(modules.keys()): |
280 for modName in modules: |
281 module = modules[modName] |
281 module = modules[modName] |
282 todo = [module.createHierarchy()] |
282 todo = [module.createHierarchy()] |
283 while todo: |
283 while todo: |
284 hierarchy = todo[0] |
284 hierarchy = todo[0] |
285 for className in hierarchy: |
285 for className in hierarchy: |
311 self.__addExternalClass(className, 0, 0) |
311 self.__addExternalClass(className, 0, 0) |
312 nodes.append(className) |
312 nodes.append(className) |
313 |
313 |
314 if hierarchy.get(className): |
314 if hierarchy.get(className): |
315 todo.append(hierarchy.get(className)) |
315 todo.append(hierarchy.get(className)) |
316 children = list(hierarchy.get(className).keys()) |
316 for child in hierarchy.get(className, []): |
317 for child in children: |
|
318 if (className, child) not in routes: |
317 if (className, child) not in routes: |
319 routes.append((className, child)) |
318 routes.append((className, child)) |
320 |
319 |
321 del todo[0] |
320 del todo[0] |
322 |
321 |
323 # step 3: build the subpackages |
322 # step 3: build the subpackages |
324 for subpackage in sorted(subpackages.keys()): |
323 for subpackage in sorted(subpackages): |
325 self.__addPackage(subpackage, subpackages[subpackage], 0, 0) |
324 self.__addPackage(subpackage, subpackages[subpackage], 0, 0) |
326 nodes.append(subpackage) |
325 nodes.append(subpackage) |
327 |
326 |
328 self.__arrangeClasses(nodes, routes[:]) |
327 self.__arrangeClasses(nodes, routes[:]) |
329 self.__createAssociations(routes) |
328 self.__createAssociations(routes) |
425 name = _class.name |
424 name = _class.name |
426 if isRbModule: |
425 if isRbModule: |
427 name = "{0} (Module)".format(name) |
426 name = "{0} (Module)".format(name) |
428 cl = ClassModel( |
427 cl = ClassModel( |
429 name, |
428 name, |
430 sorted(_class.methods.keys())[:], |
429 sorted(_class.methods), |
431 sorted(_class.attributes.keys())[:], |
430 sorted(_class.attributes), |
432 sorted(_class.globals.keys())[:], |
431 sorted(_class.globals), |
433 ) |
432 ) |
434 cw = ClassItem( |
433 cw = ClassItem( |
435 cl, |
434 cl, |
436 False, |
435 False, |
437 x, |
436 x, |