38 @param package name of a python package to show the import |
38 @param package name of a python package to show the import |
39 relationships (string) |
39 relationships (string) |
40 @param showExternalImports flag indicating to show exports from |
40 @param showExternalImports flag indicating to show exports from |
41 outside the package (boolean) |
41 outside the package (boolean) |
42 """ |
42 """ |
43 super(ImportsDiagramBuilder, self).__init__(dialog, view, project) |
43 super().__init__(dialog, view, project) |
44 self.setObjectName("ImportsDiagram") |
44 self.setObjectName("ImportsDiagram") |
45 |
45 |
46 self.showExternalImports = showExternalImports |
46 self.showExternalImports = showExternalImports |
47 self.packagePath = os.path.abspath(package) |
47 self.packagePath = os.path.abspath(package) |
48 |
48 |
59 hasInit = len(glob.glob(os.path.join(ppath, '__init__.*'))) > 0 |
59 hasInit = len(glob.glob(os.path.join(ppath, '__init__.*'))) > 0 |
60 self.shortPackage = self.packagePath.replace(ppath, '').replace( |
60 self.shortPackage = self.packagePath.replace(ppath, '').replace( |
61 os.sep, '.')[1:] |
61 os.sep, '.')[1:] |
62 |
62 |
63 pname = self.project.getProjectName() |
63 pname = self.project.getProjectName() |
64 if pname: |
64 name = ( |
65 name = self.tr("Imports Diagramm {0}: {1}").format( |
65 self.tr("Imports Diagramm {0}: {1}").format( |
66 pname, self.project.getRelativePath(self.packagePath)) |
66 pname, self.project.getRelativePath(self.packagePath)) |
67 else: |
67 if pname else |
68 name = self.tr("Imports Diagramm: {0}").format( |
68 self.tr("Imports Diagramm: {0}").format(self.packagePath) |
69 self.packagePath) |
69 ) |
70 self.umlView.setDiagramName(name) |
70 self.umlView.setDiagramName(name) |
71 |
71 |
72 def __buildModulesDict(self): |
72 def __buildModulesDict(self): |
73 """ |
73 """ |
74 Private method to build a dictionary of modules contained in the |
74 Private method to build a dictionary of modules contained in the |
92 progress = E5ProgressDialog( |
92 progress = E5ProgressDialog( |
93 self.tr("Parsing modules..."), |
93 self.tr("Parsing modules..."), |
94 None, 0, tot, self.tr("%v/%m Modules"), self.parent()) |
94 None, 0, tot, self.tr("%v/%m Modules"), self.parent()) |
95 progress.setWindowTitle(self.tr("Imports Diagramm")) |
95 progress.setWindowTitle(self.tr("Imports Diagramm")) |
96 try: |
96 try: |
97 prog = 0 |
|
98 progress.show() |
97 progress.show() |
99 QApplication.processEvents() |
98 QApplication.processEvents() |
100 for module in modules: |
99 for prog, module in enumerate(modules): |
101 progress.setValue(prog) |
100 progress.setValue(prog) |
102 QApplication.processEvents() |
101 QApplication.processEvents() |
103 prog = prog + 1 |
|
104 try: |
102 try: |
105 mod = Utilities.ModuleParser.readModule( |
103 mod = Utilities.ModuleParser.readModule( |
106 module, extensions=extensions, caching=False) |
104 module, extensions=extensions, caching=False) |
107 except ImportError: |
105 except ImportError: |
108 continue |
106 continue |
142 packageList = self.shortPackage.split('.') |
140 packageList = self.shortPackage.split('.') |
143 packageListLen = len(packageList) |
141 packageListLen = len(packageList) |
144 for module in sortedkeys: |
142 for module in sortedkeys: |
145 impLst = [] |
143 impLst = [] |
146 for i in modules[module].imports: |
144 for i in modules[module].imports: |
147 if i.startswith(self.package): |
145 n = (i[len(self.package) + 1:] |
148 n = i[len(self.package) + 1:] |
146 if i.startswith(self.package) else i) |
149 else: |
|
150 n = i |
|
151 if i in modules: |
147 if i in modules: |
152 impLst.append(n) |
148 impLst.append(n) |
153 elif self.showExternalImports: |
149 elif self.showExternalImports: |
154 impLst.append(n) |
150 impLst.append(n) |
155 if n not in externalMods: |
151 if n not in externalMods: |
247 """ |
243 """ |
248 Private method to generate the associations between the module shapes. |
244 Private method to generate the associations between the module shapes. |
249 |
245 |
250 @param shapes list of shapes |
246 @param shapes list of shapes |
251 """ |
247 """ |
252 from .AssociationItem import AssociationItem, Imports |
248 from .AssociationItem import AssociationItem, AssociationType |
253 for module in list(shapes.keys()): |
249 for module in list(shapes.keys()): |
254 for rel in shapes[module][1]: |
250 for rel in shapes[module][1]: |
255 assoc = AssociationItem( |
251 assoc = AssociationItem( |
256 shapes[module][0], shapes[rel][0], |
252 shapes[module][0], shapes[rel][0], |
257 Imports, |
253 AssociationType.IMPORTS, |
258 colors=self.umlView.getDrawingColors()) |
254 colors=self.umlView.getDrawingColors()) |
259 self.scene.addItem(assoc) |
255 self.scene.addItem(assoc) |
260 |
256 |
261 def getPersistenceData(self): |
257 def getPersistenceData(self): |
262 """ |
258 """ |