eric6/Graphics/PackageDiagramBuilder.py

changeset 8295
3f5e8b0a338e
parent 8291
3d79b1e5bf3c
child 8400
b3eefd7e58d1
equal deleted inserted replaced
8294:cb4e5bbf3a2c 8295:3f5e8b0a338e
220 self.tr("The directory <b>'{0}'</b> is not a package.") 220 self.tr("The directory <b>'{0}'</b> is not a package.")
221 .format(self.package)) 221 .format(self.package))
222 return 222 return
223 223
224 modules = self.__buildModulesDict() 224 modules = self.__buildModulesDict()
225 if not modules: 225 subpackages = self.__buildSubpackagesDict()
226
227 if not modules and not subpackages:
226 ct = QGraphicsTextItem(None) 228 ct = QGraphicsTextItem(None)
227 self.scene.addItem(ct) 229 self.scene.addItem(ct)
228 ct.setHtml( 230 ct.setHtml(self.buildErrorMessage(
229 self.tr( 231 self.tr("The package <b>'{0}'</b> does not contain any modules"
230 "The package <b>'{0}'</b> does not contain any modules.") 232 " or subpackages.").format(self.package)
231 .format(self.package)) 233 ))
232 return 234 return
233 235
234 # step 1: build all classes found in the modules 236 # step 1: build all classes found in the modules
235 classesFound = False 237 classesFound = False
236 238
237 for modName in list(modules.keys()): 239 for modName in list(modules.keys()):
238 module = modules[modName] 240 module = modules[modName]
239 for cls in list(module.classes.keys()): 241 for cls in list(module.classes.keys()):
240 classesFound = True 242 classesFound = True
241 self.__addLocalClass(cls, module.classes[cls], 0, 0) 243 self.__addLocalClass(cls, module.classes[cls], 0, 0)
242 if not classesFound: 244 if not classesFound and not subpackages:
243 ct = QGraphicsTextItem(None) 245 ct = QGraphicsTextItem(None)
244 self.scene.addItem(ct) 246 self.scene.addItem(ct)
245 ct.setHtml( 247 ct.setHtml(self.buildErrorMessage(
246 self.tr( 248 self.tr("The package <b>'{0}'</b> does not contain any"
247 "The package <b>'{0}'</b> does not contain any classes.") 249 " classes or subpackages.").format(self.package)
248 .format(self.package)) 250 ))
249 return 251 return
250 252
251 # step 2: build the class hierarchies 253 # step 2: build the class hierarchies
252 routes = [] 254 routes = []
253 nodes = [] 255 nodes = []
294 routes.append((className, child)) 296 routes.append((className, child))
295 297
296 del todo[0] 298 del todo[0]
297 299
298 # step 3: build the subpackages 300 # step 3: build the subpackages
299 subpackages = self.__buildSubpackagesDict()
300 for subpackage in sorted(subpackages.keys()): 301 for subpackage in sorted(subpackages.keys()):
301 self.__addPackage(subpackage, subpackages[subpackage], 0, 0) 302 self.__addPackage(subpackage, subpackages[subpackage], 0, 0)
302 nodes.append(subpackage) 303 nodes.append(subpackage)
303 304
304 self.__arrangeClasses(nodes, routes[:]) 305 self.__arrangeClasses(nodes, routes[:])
526 if self.__relPackage else 527 if self.__relPackage else
527 Utilities.fromNativeSeparators(self.package) 528 Utilities.fromNativeSeparators(self.package)
528 ) 529 )
529 530
530 return data 531 return data
532
533 def fromDict(self, version, data):
534 """
535 Public method to populate the class with data persisted by 'toDict()'.
536
537 @param version version of the data
538 @type str
539 @param data dictionary containing the persisted data
540 @type dict
541 @return tuple containing a flag indicating success and an info
542 message in case the diagram belongs to a different project
543 @rtype tuple of (bool, str)
544 """
545 try:
546 self.noAttrs = data["no_attributes"]
547
548 package = Utilities.toNativeSeparators(data["package"])
549 if os.path.isabs(package):
550 self.package = package
551 self.__relPackage = ""
552 else:
553 # relative package paths indicate a project package
554 if data["project_name"] != self.project.getProjectName():
555 msg = self.tr(
556 "<p>The diagram belongs to project <b>{0}</b>."
557 " Please open it and try again.</p>"
558 ).format(data["project_name"])
559 return False, msg
560
561 self.__relPackage = package
562 self.package = self.project.getAbsolutePath(package)
563 except KeyError:
564 return False, ""
565
566 self.initialize()
567
568 return True, ""

eric ide

mercurial