src/eric7/Graphics/ImportsDiagramBuilder.py

Sun, 18 Feb 2024 12:23:14 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sun, 18 Feb 2024 12:23:14 +0100
branch
server
changeset 10584
a596cf392291
parent 10439
21c28b0f9e41
child 10585
83e5a9a64543
permissions
-rw-r--r--

Adapted the Imports diagram to support the 'eric-ide' server.

0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
10439
21c28b0f9e41 Updated copyright for 2024.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10373
diff changeset
3 # Copyright (c) 2007 - 2024 Detlev Offenbach <detlev@die-offenbachs.de>
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing a dialog showing an imports diagram of a package.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 import glob
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11 import os
8943
23f9c7b9e18e Implemented some performance improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
12 import time
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13
8318
962bce857696 Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
14 from PyQt6.QtWidgets import QApplication, QGraphicsTextItem
3071
83d066710d60 Added an extended progress dialog to make the progress bar label more descriptive.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3035
diff changeset
15
9624
b47dfa7a137d Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9576
diff changeset
16 from eric7 import Globals, Preferences
10584
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
17 from eric7.EricWidgets.EricApplication import ericApp
9413
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9278
diff changeset
18 from eric7.EricWidgets.EricProgressDialog import EricProgressDialog
9624
b47dfa7a137d Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9576
diff changeset
19 from eric7.SystemUtilities import FileSystemUtilities
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20
2031
c36c2eb62a75 Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2030
diff changeset
21 from .UMLDiagramBuilder import UMLDiagramBuilder
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
23
2031
c36c2eb62a75 Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2030
diff changeset
24 class ImportsDiagramBuilder(UMLDiagramBuilder):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 """
2031
c36c2eb62a75 Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2030
diff changeset
26 Class implementing a builder for imports diagrams of a package.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
27
2031
c36c2eb62a75 Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2030
diff changeset
28 Note: Only package internal imports are shown in order to maintain
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 some readability.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
31
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
32 def __init__(self, dialog, view, project, package, showExternalImports=False):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 Constructor
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
35
8287
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8286
diff changeset
36 @param dialog reference to the UML dialog
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8286
diff changeset
37 @type UMLDialog
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8286
diff changeset
38 @param view reference to the view object
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8286
diff changeset
39 @type UMLGraphicsView
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8286
diff changeset
40 @param project reference to the project object
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8286
diff changeset
41 @type Project
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
42 @param package name of a python package to show the import
8287
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8286
diff changeset
43 relationships
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8286
diff changeset
44 @type str
7900
72b88fb20261 Corrected the use of '@keyparam' in the source documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7849
diff changeset
45 @param showExternalImports flag indicating to show exports from
8287
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8286
diff changeset
46 outside the package
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8286
diff changeset
47 @type bool
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 """
8218
7c09585bd960 Applied some more code simplifications suggested by the new Simplify checker (super(Foo, self) => super()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8217
diff changeset
49 super().__init__(dialog, view, project)
2031
c36c2eb62a75 Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2030
diff changeset
50 self.setObjectName("ImportsDiagram")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
51
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 self.showExternalImports = showExternalImports
10584
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
53 if FileSystemUtilities.isRemoteFileName(package):
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
54 self.packagePath = package
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
55 else:
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
56 self.packagePath = os.path.abspath(package)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
57
8291
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8287
diff changeset
58 self.__relPackagePath = (
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8287
diff changeset
59 self.project.getRelativePath(self.packagePath)
9517
d73c3a1e432b Continued refactoring of the project browser related code in order to extract some as plugins later on.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
60 if self.project.isProjectCategory(self.packagePath, "SOURCES")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
61 else ""
8291
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8287
diff changeset
62 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
63
10584
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
64 self.__remotefsInterface = (
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
65 ericApp().getObject("EricServer").getServiceInterface("FileSystem")
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
66 )
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
67
2033
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
68 def initialize(self):
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
69 """
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
70 Public method to initialize the object.
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
71 """
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 hasInit = True
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 ppath = self.packagePath
10584
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
74
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
75 if FileSystemUtilities.isRemoteFileName(self.packagePath):
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
76 self.package = (
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
77 FileSystemUtilities.plainFileName(self.packagePath)[1:]
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
78 .replace("/", ".")
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
79 .replace("\\", ".")
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
80 )
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
81 while hasInit:
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
82 ppath = self.__remotefsInterface.dirname(ppath)
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
83 globPattern = self.__remotefsInterface.join(ppath, "__init__.*")
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
84 hasInit = len(self.__remotefsInterface.glob(globPattern)) > 0
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
85 else:
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
86 self.package = (
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
87 os.path.splitdrive(self.packagePath)[1][1:].replace(os.sep, ".")
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
88 )
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
89 while hasInit:
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
90 ppath = os.path.dirname(ppath)
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
91 hasInit = len(glob.glob(os.path.join(ppath, "__init__.*"))) > 0
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
92
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
93 self.shortPackage = self.packagePath.replace(ppath, "").replace(os.sep, ".")[1:]
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
94
2033
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
95 pname = self.project.getProjectName()
8257
28146736bbfc Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8234
diff changeset
96 name = (
28146736bbfc Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8234
diff changeset
97 self.tr("Imports Diagramm {0}: {1}").format(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
98 pname, self.project.getRelativePath(self.packagePath)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
99 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
100 if pname
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
101 else self.tr("Imports Diagramm: {0}").format(self.packagePath)
8257
28146736bbfc Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8234
diff changeset
102 )
2031
c36c2eb62a75 Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2030
diff changeset
103 self.umlView.setDiagramName(name)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
104
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105 def __buildModulesDict(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106 """
2992
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2953
diff changeset
107 Private method to build a dictionary of modules contained in the
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2953
diff changeset
108 package.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
109
8287
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8286
diff changeset
110 @return dictionary of modules contained in the package
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8286
diff changeset
111 @rtype dict
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 """
9413
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9278
diff changeset
113 from eric7.Utilities import ModuleParser
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
114
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
115 extensions = Preferences.getPython("Python3Extensions")
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 moduleDict = {}
40
c2e5472b112c Changed some code to adjust eric5 to Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 28
diff changeset
117 modules = []
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
118 for ext in Preferences.getPython("Python3Extensions"):
10584
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
119 if FileSystemUtilities.isRemoteFileName(self.packagePath):
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
120 modules.extend(
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
121 [
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
122 FileSystemUtilities.remoteFileName(f)
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
123 for f in self.__remotefsInterface.glob(
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
124 self.__remotefsInterface.join(self.packagePath, f"*{ext}")
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
125 )
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
126 ]
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
127 )
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
128 else:
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
129 modules.extend(
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
130 glob.glob(
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
131 FileSystemUtilities.normjoinpath(self.packagePath, f"*{ext}")
9624
b47dfa7a137d Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9576
diff changeset
132 )
b47dfa7a137d Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9576
diff changeset
133 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
134
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135 tot = len(modules)
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8348
diff changeset
136 progress = EricProgressDialog(
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
137 self.tr("Parsing modules..."),
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
138 None,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
139 0,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
140 tot,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
141 self.tr("%v/%m Modules"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
142 self.parent(),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
143 )
3478
beec1d9c1851 Correct window titles of progress dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
144 progress.setWindowTitle(self.tr("Imports Diagramm"))
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145 try:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146 progress.show()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147 QApplication.processEvents()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
148
8943
23f9c7b9e18e Implemented some performance improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
149 now = time.monotonic()
8217
385f60c94548 Applied some more code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
150 for prog, module in enumerate(modules):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 progress.setValue(prog)
8943
23f9c7b9e18e Implemented some performance improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
152 if time.monotonic() - now > 0.01:
23f9c7b9e18e Implemented some performance improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
153 QApplication.processEvents()
23f9c7b9e18e Implemented some performance improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
154 now = time.monotonic()
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
155 try:
9413
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9278
diff changeset
156 mod = ModuleParser.readModule(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
157 module, extensions=extensions, caching=False
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
158 )
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159 except ImportError:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160 continue
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161 else:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162 name = mod.name
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163 if name.startswith(self.package):
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
164 name = name[len(self.package) + 1 :]
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
165 moduleDict[name] = mod
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
166 finally:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167 progress.setValue(tot)
2334
fc69ad77e18a Introduced a zoom widget in the status bar of several windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
168 progress.deleteLater()
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
169 return moduleDict
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
170
2031
c36c2eb62a75 Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2030
diff changeset
171 def buildDiagram(self):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
172 """
2031
c36c2eb62a75 Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2030
diff changeset
173 Public method to build the modules shapes of the diagram.
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
174 """
10584
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
175 if FileSystemUtilities.isRemoteFileName(self.packagePath):
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
176 globPattern = self.__remotefsInterface.join(self.packagePath, "__init__.*")
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
177 initlist = self.__remotefsInterface.glob(globPattern)
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
178 else:
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
179 initlist = glob.glob(os.path.join(self.packagePath, "__init__.*"))
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 if len(initlist) == 0:
2094
88620e11c67c Made the seventh set of Qt5 compatibility changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2034
diff changeset
181 ct = QGraphicsTextItem(None)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
182 ct.setHtml(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
183 self.buildErrorMessage(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
184 self.tr(
9576
be9f8e7e42e0 Corrected some 'wrong' string quotes caused by the Black line merging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9517
diff changeset
185 "The directory <b>'{0}'</b> is not a Python package."
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
186 ).format(self.package)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
187 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
188 )
2094
88620e11c67c Made the seventh set of Qt5 compatibility changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2034
diff changeset
189 self.scene.addItem(ct)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
190 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
191
8286
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
192 self.__shapes = {}
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
193
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
194 modules = self.__buildModulesDict()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
195 externalMods = []
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
196 packageList = self.shortPackage.split(".")
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
197 packageListLen = len(packageList)
10373
093dcebe5ecb Corrected some uses of dict.keys(), dict.values() and dict.items().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
198 for module in sorted(modules):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
199 impLst = []
8277
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
200 for importName in modules[module].imports:
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
201 n = (
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
202 importName[len(self.package) + 1 :]
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
203 if importName.startswith(self.package)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
204 else importName
8277
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
205 )
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
206 if importName in modules:
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
207 impLst.append(n)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
208 elif self.showExternalImports:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
209 impLst.append(n)
3621
15f23ed3f216 Fixed a few source code style issues found by the updated pe8 checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3515
diff changeset
210 if n not in externalMods:
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
211 externalMods.append(n)
10373
093dcebe5ecb Corrected some uses of dict.keys(), dict.values() and dict.items().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
212 for importName in modules[module].from_imports:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
213 if importName.startswith("."):
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
214 dots = len(importName) - len(importName.lstrip("."))
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
215 if dots == 1:
8277
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
216 n = importName[1:]
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
217 importName = n
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
218 else:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
219 if self.showExternalImports:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
220 n = ".".join(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
221 packageList[: packageListLen - dots + 1]
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
222 + [importName[dots:]]
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
223 )
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
224 else:
8277
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
225 n = importName
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
226 elif importName.startswith(self.package):
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
227 n = importName[len(self.package) + 1 :]
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
228 else:
8277
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
229 n = importName
ea734702ae94 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
230 if importName in modules:
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
231 impLst.append(n)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
232 elif self.showExternalImports:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
233 impLst.append(n)
3621
15f23ed3f216 Fixed a few source code style issues found by the updated pe8 checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3515
diff changeset
234 if n not in externalMods:
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
235 externalMods.append(n)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
236
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
237 classNames = []
10373
093dcebe5ecb Corrected some uses of dict.keys(), dict.values() and dict.items().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
238 for class_ in modules[module].classes:
8286
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
239 className = modules[module].classes[class_].name
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
240 if className not in classNames:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
241 classNames.append(className)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
242 shape = self.__addModule(module, classNames, 0.0, 0.0)
8286
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
243 self.__shapes[module] = (shape, impLst)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
244
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
245 for module in externalMods:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
246 shape = self.__addModule(module, [], 0.0, 0.0)
8286
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
247 self.__shapes[module] = (shape, [])
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
248
8286
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
249 # build a list of routes
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
250 nodes = []
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
251 routes = []
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
252 for module in self.__shapes:
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
253 nodes.append(module)
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
254 for rel in self.__shapes[module][1]:
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
255 route = (module, rel)
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
256 if route not in routes:
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
257 routes.append(route)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
258
8286
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
259 self.__arrangeNodes(nodes, routes[:])
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
260 self.__createAssociations(routes)
2027
144463496a54 A few fixes for issues with the graphics dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2026
diff changeset
261 self.umlView.autoAdjustSceneSize(limit=True)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
262
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
263 def __addModule(self, name, classes, x, y):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
264 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
265 Private method to add a module to the diagram.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
266
8287
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8286
diff changeset
267 @param name module name to be shown
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8286
diff changeset
268 @type str
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
269 @param classes list of class names contained in the module
8287
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8286
diff changeset
270 @type list of str
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8286
diff changeset
271 @param x x-coordinate
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8286
diff changeset
272 @type float
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8286
diff changeset
273 @param y y-coordinate
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8286
diff changeset
274 @type float
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8286
diff changeset
275 @return reference to the imports item
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8286
diff changeset
276 @rtype ModuleItem
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
277 """
2401
4f428de32b69 Continued implementing the delayed import.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2334
diff changeset
278 from .ModuleItem import ModuleItem, ModuleModel
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
279
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
280 classes.sort()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
281 impM = ModuleModel(name, classes)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
282 impW = ModuleItem(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
283 impM, x, y, scene=self.scene, colors=self.umlView.getDrawingColors()
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
284 )
2030
db11a2fe9bbc Implemented functions to save the UML graphics to disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2027
diff changeset
285 impW.setId(self.umlView.getItemId())
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
286 return impW
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
287
8286
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
288 def __arrangeNodes(self, nodes, routes, whiteSpaceFactor=1.2):
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
289 """
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
290 Private method to arrange the shapes on the canvas.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
291
8286
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
292 The algorithm is borrowed from Boa Constructor.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
293
8286
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
294 @param nodes list of nodes to arrange
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
295 @type list of str
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
296 @param routes list of routes
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
297 @type list of tuple of (str, str)
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
298 @param whiteSpaceFactor factor to increase whitespace between
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
299 items
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
300 @type float
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
301 """
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
302 from . import GraphicsUtilities
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
303
8286
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
304 generations = GraphicsUtilities.sort(nodes, routes)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
305
8286
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
306 # calculate width and height of all elements
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
307 sizes = []
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
308 for generation in generations:
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
309 sizes.append([])
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
310 for child in generation:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
311 sizes[-1].append(self.__shapes[child][0].sceneBoundingRect())
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
312
8286
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
313 # calculate total width and total height
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
314 width = 0
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
315 height = 0
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
316 widths = []
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
317 heights = []
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
318 for generation in sizes:
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
319 currentWidth = 0
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
320 currentHeight = 0
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
321
8286
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
322 for rect in generation:
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
323 if rect.height() > currentHeight:
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
324 currentHeight = rect.height()
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
325 currentWidth += rect.width()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
326
8286
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
327 # update totals
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
328 if currentWidth > width:
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
329 width = currentWidth
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
330 height += currentHeight
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
331
8286
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
332 # store generation info
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
333 widths.append(currentWidth)
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
334 heights.append(currentHeight)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
335
8286
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
336 # add in some whitespace
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
337 width *= whiteSpaceFactor
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
338 height = height * whiteSpaceFactor - 20
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
339 verticalWhiteSpace = 40.0
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
340
8286
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
341 sceneRect = self.umlView.sceneRect()
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
342 width += 50.0
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
343 height += 50.0
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
344 swidth = sceneRect.width() if width < sceneRect.width() else width
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
345 sheight = sceneRect.height() if height < sceneRect.height() else height
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
346 self.umlView.setSceneSize(swidth, sheight)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
347
8286
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
348 # distribute each generation across the width and the
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
349 # generations across height
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
350 y = 10.0
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
351 for currentWidth, currentHeight, generation in zip(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
352 reversed(widths), reversed(heights), reversed(generations)
8286
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
353 ):
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
354 x = 10.0
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
355 # whiteSpace is the space between any two elements
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
356 whiteSpace = (width - currentWidth - 20) / (len(generation) - 1.0 or 2.0)
8286
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
357 for name in generation:
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
358 shape = self.__shapes[name][0]
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
359 shape.setPos(x, y)
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
360 rect = shape.sceneBoundingRect()
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
361 x = x + rect.width() + whiteSpace
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
362 y = y + currentHeight + verticalWhiteSpace
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
363
8286
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
364 def __createAssociations(self, routes):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
365 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
366 Private method to generate the associations between the module shapes.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
367
8286
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
368 @param routes list of associations
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
369 @type list of tuple of (str, str)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
370 """
8270
6ba3564b7161 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8257
diff changeset
371 from .AssociationItem import AssociationItem, AssociationType
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
372
8286
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
373 for route in routes:
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
374 assoc = AssociationItem(
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
375 self.__shapes[route[0]][0],
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
376 self.__shapes[route[1]][0],
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
377 AssociationType.IMPORTS,
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
378 colors=self.umlView.getDrawingColors(),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
379 )
8286
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8277
diff changeset
380 self.scene.addItem(assoc)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
381
10069
435cc5875135 Corrected and checked some code style issues (unused function arguments).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
382 def parsePersistenceData(self, version, data): # noqa: U100
2033
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
383 """
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
384 Public method to parse persisted data.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
385
8287
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8286
diff changeset
386 @param version version of the data
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8286
diff changeset
387 @type str
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8286
diff changeset
388 @param data persisted data to be parsed
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8286
diff changeset
389 @type str
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8286
diff changeset
390 @return flag indicating success
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8286
diff changeset
391 @rtype bool
2033
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
392 """
2034
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
393 parts = data.split(", ")
7254
f00d825fbdb3 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
394 if (
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
395 len(parts) != 2
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
396 or not parts[0].startswith("package=")
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
397 or not parts[1].startswith("show_external=")
7254
f00d825fbdb3 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
398 ):
2034
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
399 return False
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
400
2034
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
401 self.packagePath = parts[0].split("=", 1)[1].strip()
9624
b47dfa7a137d Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9576
diff changeset
402 self.showExternalImports = Globals.toBool(parts[1].split("=", 1)[1].strip())
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
403
2034
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
404 self.initialize()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
405
2034
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
406 return True
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
407
8291
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8287
diff changeset
408 def toDict(self):
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8287
diff changeset
409 """
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8287
diff changeset
410 Public method to collect data to be persisted.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
411
8291
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8287
diff changeset
412 @return dictionary containing data to be persisted
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8287
diff changeset
413 @rtype dict
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8287
diff changeset
414 """
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8287
diff changeset
415 data = {
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8287
diff changeset
416 "project_name": self.project.getProjectName(),
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8287
diff changeset
417 "show_external": self.showExternalImports,
9278
36448ca469c2 Simplified some code iaw. recommendations of the extended style checker and reformatted the code with black.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
418 "package": (
9624
b47dfa7a137d Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9576
diff changeset
419 FileSystemUtilities.fromNativeSeparators(self.__relPackagePath)
9278
36448ca469c2 Simplified some code iaw. recommendations of the extended style checker and reformatted the code with black.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
420 if self.__relPackagePath
9624
b47dfa7a137d Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9576
diff changeset
421 else FileSystemUtilities.fromNativeSeparators(self.packagePath)
9278
36448ca469c2 Simplified some code iaw. recommendations of the extended style checker and reformatted the code with black.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
422 ),
8291
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8287
diff changeset
423 }
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
424
8291
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8287
diff changeset
425 return data
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
426
10069
435cc5875135 Corrected and checked some code style issues (unused function arguments).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
427 def fromDict(self, version, data): # noqa: U100
8295
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
428 """
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
429 Public method to populate the class with data persisted by 'toDict()'.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
430
8295
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
431 @param version version of the data
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
432 @type str
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
433 @param data dictionary containing the persisted data
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
434 @type dict
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
435 @return tuple containing a flag indicating success and an info
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
436 message in case the diagram belongs to a different project
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
437 @rtype tuple of (bool, str)
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
438 """
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
439 try:
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
440 self.showExternalImports = data["show_external"]
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
441
9624
b47dfa7a137d Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9576
diff changeset
442 packagePath = FileSystemUtilities.toNativeSeparators(data["package"])
8295
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
443 if os.path.isabs(packagePath):
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
444 self.packagePath = packagePath
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
445 self.__relPackagePath = ""
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
446 else:
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
447 # relative package paths indicate a project package
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
448 if data["project_name"] != self.project.getProjectName():
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
449 msg = self.tr(
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
450 "<p>The diagram belongs to project <b>{0}</b>."
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
451 " Please open it and try again.</p>"
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
452 ).format(data["project_name"])
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
453 return False, msg
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
454
8295
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
455 self.__relPackagePath = packagePath
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
456 self.package = self.project.getAbsolutePath(packagePath)
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
457 except KeyError:
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
458 return False, ""
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
459
8295
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
460 self.initialize()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
461
8295
3f5e8b0a338e UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8291
diff changeset
462 return True, ""

eric ide

mercurial