13 |
13 |
14 from itertools import zip_longest |
14 from itertools import zip_longest |
15 |
15 |
16 from PyQt6.QtWidgets import QApplication, QGraphicsTextItem |
16 from PyQt6.QtWidgets import QApplication, QGraphicsTextItem |
17 |
17 |
18 from eric7 import Preferences, Utilities |
18 from eric7 import Globals, Preferences |
19 from eric7.EricWidgets.EricProgressDialog import EricProgressDialog |
19 from eric7.EricWidgets.EricProgressDialog import EricProgressDialog |
|
20 from eric7.SystemUtilities import FileSystemUtilities |
20 |
21 |
21 from .UMLDiagramBuilder import UMLDiagramBuilder |
22 from .UMLDiagramBuilder import UMLDiagramBuilder |
22 |
23 |
23 |
24 |
24 class PackageDiagramBuilder(UMLDiagramBuilder): |
25 class PackageDiagramBuilder(UMLDiagramBuilder): |
94 extensions = Preferences.getPython("Python3Extensions") + [".rb"] |
95 extensions = Preferences.getPython("Python3Extensions") + [".rb"] |
95 |
96 |
96 moduleDict = {} |
97 moduleDict = {} |
97 modules = [] |
98 modules = [] |
98 for ext in supportedExt: |
99 for ext in supportedExt: |
99 modules.extend(glob.glob(Utilities.normjoinpath(self.package, ext))) |
100 modules.extend( |
|
101 glob.glob(FileSystemUtilities.normjoinpath(self.package, ext)) |
|
102 ) |
100 tot = len(modules) |
103 tot = len(modules) |
101 progress = EricProgressDialog( |
104 progress = EricProgressDialog( |
102 self.tr("Parsing modules..."), |
105 self.tr("Parsing modules..."), |
103 None, |
106 None, |
104 0, |
107 0, |
161 subpackagesList.append(subpackagePath) |
164 subpackagesList.append(subpackagePath) |
162 |
165 |
163 tot = 0 |
166 tot = 0 |
164 for ext in supportedExt: |
167 for ext in supportedExt: |
165 for subpackage in subpackagesList: |
168 for subpackage in subpackagesList: |
166 tot += len(glob.glob(Utilities.normjoinpath(subpackage, ext))) |
169 tot += len(glob.glob(FileSystemUtilities.normjoinpath(subpackage, ext))) |
167 progress = EricProgressDialog( |
170 progress = EricProgressDialog( |
168 self.tr("Parsing modules..."), |
171 self.tr("Parsing modules..."), |
169 None, |
172 None, |
170 0, |
173 0, |
171 tot, |
174 tot, |
181 for subpackage in subpackagesList: |
184 for subpackage in subpackagesList: |
182 packageName = os.path.basename(subpackage) |
185 packageName = os.path.basename(subpackage) |
183 subpackagesDict[packageName] = [] |
186 subpackagesDict[packageName] = [] |
184 modules = [] |
187 modules = [] |
185 for ext in supportedExt: |
188 for ext in supportedExt: |
186 modules.extend(glob.glob(Utilities.normjoinpath(subpackage, ext))) |
189 modules.extend( |
|
190 glob.glob(FileSystemUtilities.normjoinpath(subpackage, ext)) |
|
191 ) |
187 for prog, module in enumerate(modules): |
192 for prog, module in enumerate(modules): |
188 progress.setValue(prog) |
193 progress.setValue(prog) |
189 if time.monotonic() - now > 0.01: |
194 if time.monotonic() - now > 0.01: |
190 QApplication.processEvents() |
195 QApplication.processEvents() |
191 now = time.monotonic() |
196 now = time.monotonic() |
542 """ |
547 """ |
543 data = { |
548 data = { |
544 "project_name": self.project.getProjectName(), |
549 "project_name": self.project.getProjectName(), |
545 "no_attributes": self.noAttrs, |
550 "no_attributes": self.noAttrs, |
546 "package": ( |
551 "package": ( |
547 Utilities.fromNativeSeparators(self.__relPackage) |
552 FileSystemUtilities.fromNativeSeparators(self.__relPackage) |
548 if self.__relPackage |
553 if self.__relPackage |
549 else Utilities.fromNativeSeparators(self.package) |
554 else FileSystemUtilities.fromNativeSeparators(self.package) |
550 ), |
555 ), |
551 } |
556 } |
552 |
557 |
553 return data |
558 return data |
554 |
559 |
565 @rtype tuple of (bool, str) |
570 @rtype tuple of (bool, str) |
566 """ |
571 """ |
567 try: |
572 try: |
568 self.noAttrs = data["no_attributes"] |
573 self.noAttrs = data["no_attributes"] |
569 |
574 |
570 package = Utilities.toNativeSeparators(data["package"]) |
575 package = FileSystemUtilities.toNativeSeparators(data["package"]) |
571 if os.path.isabs(package): |
576 if os.path.isabs(package): |
572 self.package = package |
577 self.package = package |
573 self.__relPackage = "" |
578 self.__relPackage = "" |
574 else: |
579 else: |
575 # relative package paths indicate a project package |
580 # relative package paths indicate a project package |