eric6/Graphics/ApplicationDiagramBuilder.py

Wed, 05 May 2021 18:17:24 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Wed, 05 May 2021 18:17:24 +0200
changeset 8291
3d79b1e5bf3c
parent 8287
30eb7bc13d63
child 8295
3f5e8b0a338e
permissions
-rw-r--r--

UML Diagrams
- added code to save diagrams as JSON files

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
7923
91e843545d9a Updated copyright for 2021.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7900
diff changeset
3 # Copyright (c) 2007 - 2021 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 the application.
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 os
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11 import glob
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12
8286
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
13 from PyQt5.QtWidgets import QApplication, QInputDialog
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14
2034
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
15 from E5Gui import E5MessageBox
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
16 from E5Gui.E5ProgressDialog import E5ProgressDialog
2034
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
17
2031
c36c2eb62a75 Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2030
diff changeset
18 from .UMLDiagramBuilder import UMLDiagramBuilder
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20 import Utilities
1845
d481279d882b Fixed an issue parsing sources in the various UML like diagrams.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
21 import Preferences
d481279d882b Fixed an issue parsing sources in the various UML like diagrams.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
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 ApplicationDiagramBuilder(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 the application.
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 """
2031
c36c2eb62a75 Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2030
diff changeset
28 def __init__(self, dialog, view, project, noModules=False):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 Constructor
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31
8287
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8286
diff changeset
32 @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
33 @type UMLDialog
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8286
diff changeset
34 @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
35 @type UMLGraphicsView
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8286
diff changeset
36 @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
37 @type Project
7900
72b88fb20261 Corrected the use of '@keyparam' in the source documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7780
diff changeset
38 @param noModules flag indicating, that no module names should be
8287
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8286
diff changeset
39 shown
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8286
diff changeset
40 @type bool
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 """
8218
7c09585bd960 Applied some more code simplifications suggested by the new Simplify checker (super(Foo, self) => super()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8205
diff changeset
42 super().__init__(dialog, view, project)
2031
c36c2eb62a75 Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2030
diff changeset
43 self.setObjectName("ApplicationDiagram")
c36c2eb62a75 Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2030
diff changeset
44
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 self.noModules = noModules
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46
2992
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2953
diff changeset
47 self.umlView.setDiagramName(
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
48 self.tr("Application Diagram {0}").format(
2992
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2953
diff changeset
49 self.project.getProjectName()))
2030
db11a2fe9bbc Implemented functions to save the UML graphics to disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2027
diff changeset
50
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 def __buildModulesDict(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 """
2992
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2953
diff changeset
53 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
54 application.
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55
8287
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8286
diff changeset
56 @return dictionary of modules contained in the application
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8286
diff changeset
57 @rtype dict
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 """
2402
304fcefd3b04 Continued implementing the delayed import.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2401
diff changeset
59 import Utilities.ModuleParser
7254
f00d825fbdb3 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
60 extensions = (
f00d825fbdb3 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
61 Preferences.getPython("Python3Extensions") +
f00d825fbdb3 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
62 ['.rb']
f00d825fbdb3 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
63 )
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 moduleDict = {}
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 mods = self.project.pdata["SOURCES"]
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 modules = []
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 for module in mods:
2992
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2953
diff changeset
68 modules.append(Utilities.normabsjoinpath(
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2953
diff changeset
69 self.project.ppath, module))
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 tot = len(modules)
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
71 progress = E5ProgressDialog(
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
72 self.tr("Parsing modules..."),
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
73 None, 0, tot, self.tr("%v/%m Modules"), self.parent())
3478
beec1d9c1851 Correct window titles of progress dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
74 progress.setWindowTitle(self.tr("Application Diagram"))
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 try:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 progress.show()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 QApplication.processEvents()
2401
4f428de32b69 Continued implementing the delayed import.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2334
diff changeset
78
8220
006ee31b4835 Applied some more code simplifications suggested by the new Simplify checker (Y113: use enumerate()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8218
diff changeset
79 for prog, module in enumerate(modules):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 progress.setValue(prog)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81 QApplication.processEvents()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 if module.endswith("__init__.py"):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 continue
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
84 try:
2992
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2953
diff changeset
85 mod = Utilities.ModuleParser.readModule(
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2953
diff changeset
86 module, extensions=extensions, caching=False)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 except ImportError:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 continue
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 else:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 name = mod.name
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 moduleDict[name] = mod
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 finally:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93 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
94 progress.deleteLater()
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 return moduleDict
8286
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
96
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
97 def __findApplicationRoot(self):
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
98 """
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
99 Private method to find the application root path.
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
100
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
101 @return application root path
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
102 @rtype str
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
103 """
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
104 candidates = []
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
105 path = self.project.getProjectPath()
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
106 init = os.path.join(path, "__init__.py")
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
107 if os.path.exists(init):
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
108 # project is a package
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
109 return path
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
110 else:
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
111 # check, if one of the top directories is a package
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
112 for entry in os.listdir(path):
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
113 if entry.startswith("."):
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
114 # ignore hidden files and directories
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
115 continue
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
116
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
117 fullpath = os.path.join(path, entry)
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
118 if os.path.isdir(fullpath):
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
119 init = os.path.join(fullpath, "__init__.py")
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
120 if os.path.exists(init):
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
121 candidates.append(fullpath)
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
122
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
123 if len(candidates) == 1:
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
124 return candidates[0]
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
125 elif len(candidates) > 1:
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
126 root, ok = QInputDialog.getItem(
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
127 None,
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
128 self.tr("Application Diagram"),
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
129 self.tr("Select the application directory:"),
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
130 sorted(candidates),
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
131 0, True)
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
132 if ok:
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
133 return root
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
134 else:
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
135 E5MessageBox.warning(
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
136 None,
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
137 self.tr("Application Diagram"),
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
138 self.tr("""No application package could be detected."""
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
139 """ Aborting..."""))
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
140 return None
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141
2031
c36c2eb62a75 Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2030
diff changeset
142 def buildDiagram(self):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143 """
2031
c36c2eb62a75 Refactored the UML graphics code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2030
diff changeset
144 Public method to build the packages shapes of the diagram.
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145 """
8286
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
146 rpath = self.__findApplicationRoot()
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
147 if rpath is None:
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
148 # no root path detected
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
149 return
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
150
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
151 root = os.path.splitdrive(rpath)[1].replace(os.sep, '.')[1:]
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
152
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 packages = {}
8286
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
154 self.__shapes = {}
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156 modules = self.__buildModulesDict()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158 # step 1: build a dictionary of packages
8270
6ba3564b7161 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
159 for module in sorted(modules.keys()):
8286
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
160 if "." in module:
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
161 packageName, moduleName = module.rsplit(".", 1)
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
162 else:
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
163 packageName, moduleName = "", module
8270
6ba3564b7161 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
164 if packageName in packages:
6ba3564b7161 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
165 packages[packageName][0].append(moduleName)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
166 else:
8270
6ba3564b7161 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
167 packages[packageName] = ([moduleName], [])
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
168
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
169 # step 2: assign modules to dictionaries and update import relationship
8270
6ba3564b7161 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
170 for module in sorted(modules.keys()):
6ba3564b7161 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
171 package = module.rsplit(".", 1)[0]
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
172 impLst = []
8270
6ba3564b7161 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
173 for moduleImport in modules[module].imports:
6ba3564b7161 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
174 if moduleImport in modules:
6ba3564b7161 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
175 impLst.append(moduleImport)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
176 else:
8270
6ba3564b7161 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
177 if moduleImport.find('.') == -1:
6ba3564b7161 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
178 n = "{0}.{1}".format(modules[module].package,
6ba3564b7161 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
179 moduleImport)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 if n in modules:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181 impLst.append(n)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182 else:
8286
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
183 n = "{0}.{1}".format(root, moduleImport)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
184 if n in modules:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
185 impLst.append(n)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
186 elif n in packages:
413
3d82e6eb3516 Did some more string format conversions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 248
diff changeset
187 n = "{0}.<<Dummy>>".format(n)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
188 impLst.append(n)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189 else:
8286
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
190 n = "{0}.{1}".format(root, moduleImport)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
191 if n in modules:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
192 impLst.append(n)
8270
6ba3564b7161 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
193 for moduleImport in list(modules[module].from_imports.keys()):
6ba3564b7161 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
194 if moduleImport.startswith('.'):
6ba3564b7161 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
195 dots = len(moduleImport) - len(moduleImport.lstrip('.'))
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
196 if dots == 1:
8270
6ba3564b7161 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
197 moduleImport = moduleImport[1:]
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
198 elif dots > 1:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
199 packagePath = os.path.dirname(modules[module].file)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
200 hasInit = True
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
201 ppath = packagePath
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
202 while hasInit:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
203 ppath = os.path.dirname(ppath)
2992
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2953
diff changeset
204 hasInit = len(glob.glob(os.path.join(
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2953
diff changeset
205 ppath, '__init__.*'))) > 0
7254
f00d825fbdb3 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
206 shortPackage = (
f00d825fbdb3 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
207 packagePath.replace(ppath, '')
2992
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2953
diff changeset
208 .replace(os.sep, '.')[1:]
7254
f00d825fbdb3 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
209 )
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
210 packageList = shortPackage.split('.')[1:]
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
211 packageListLen = len(packageList)
8270
6ba3564b7161 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
212 moduleImport = '.'.join(
3034
7ce719013078 Fixed various coding style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3022
diff changeset
213 packageList[:packageListLen - dots + 1] +
8270
6ba3564b7161 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
214 [moduleImport[dots:]])
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
215
8270
6ba3564b7161 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
216 if moduleImport in modules:
6ba3564b7161 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
217 impLst.append(moduleImport)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
218 else:
8270
6ba3564b7161 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
219 if moduleImport.find('.') == -1:
6ba3564b7161 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
220 n = "{0}.{1}".format(modules[module].package,
6ba3564b7161 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
221 moduleImport)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
222 if n in modules:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
223 impLst.append(n)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
224 else:
8286
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
225 n = "{0}.{1}".format(root, moduleImport)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
226 if n in modules:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
227 impLst.append(n)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
228 elif n in packages:
413
3d82e6eb3516 Did some more string format conversions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 248
diff changeset
229 n = "{0}.<<Dummy>>".format(n)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
230 impLst.append(n)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
231 else:
8286
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
232 n = "{0}.{1}".format(root, moduleImport)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
233 if n in modules:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
234 impLst.append(n)
8270
6ba3564b7161 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
235 for moduleImport in impLst:
6ba3564b7161 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
236 impPackage = moduleImport.rsplit(".", 1)[0]
8286
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
237 try:
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
238 if (
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
239 impPackage not in packages[package][1] and
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
240 impPackage != package
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
241 ):
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
242 packages[package][1].append(impPackage)
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
243 except KeyError:
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
244 continue
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
245
8270
6ba3564b7161 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
246 for package in sorted(packages.keys()):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
247 if package:
8286
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
248 relPackage = package.replace(root, '')
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
249 if relPackage and relPackage[0] == '.':
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
250 relPackage = relPackage[1:]
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
251 else:
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
252 relPackage = self.tr("<<Application>>")
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
253 else:
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
254 relPackage = self.tr("<<Others>>")
2992
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2953
diff changeset
255 shape = self.__addPackage(
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2953
diff changeset
256 relPackage, packages[package][0], 0.0, 0.0)
8286
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
257 self.__shapes[package] = (shape, packages[package][1])
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
258
8286
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
259 # build a list of routes
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
260 nodes = []
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
261 routes = []
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
262 for module in self.__shapes:
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
263 nodes.append(module)
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
264 for rel in self.__shapes[module][1]:
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
265 route = (module, rel)
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
266 if route not in routes:
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
267 routes.append(route)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
268
8286
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
269 self.__arrangeNodes(nodes, routes[:])
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
270 self.__createAssociations(routes)
2027
144463496a54 A few fixes for issues with the graphics dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2026
diff changeset
271 self.umlView.autoAdjustSceneSize(limit=True)
8286
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
272
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
273 def __addPackage(self, name, modules, x, y):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
274 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
275 Private method to add a package to the diagram.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
276
8287
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8286
diff changeset
277 @param name package name to be shown
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8286
diff changeset
278 @type str
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
279 @param modules list of module names contained in the package
8287
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8286
diff changeset
280 @type list of str
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8286
diff changeset
281 @param x x-coordinate
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8286
diff changeset
282 @type float
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8286
diff changeset
283 @param y y-coordinate
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8286
diff changeset
284 @type float
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8286
diff changeset
285 @return reference to the package item
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8286
diff changeset
286 @rtype PackageItem
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
287 """
2401
4f428de32b69 Continued implementing the delayed import.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2334
diff changeset
288 from .PackageItem import PackageItem, PackageModel
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
289 modules.sort()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
290 pm = PackageModel(name, modules)
7529
2b8a0d8ba12a UML Diagrams: added support for dark color scheme.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
291 pw = PackageItem(pm, x, y, noModules=self.noModules, scene=self.scene,
2b8a0d8ba12a UML Diagrams: added support for dark color scheme.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
292 colors=self.umlView.getDrawingColors())
2030
db11a2fe9bbc Implemented functions to save the UML graphics to disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2027
diff changeset
293 pw.setId(self.umlView.getItemId())
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
294 return pw
8286
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
295
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
296 def __arrangeNodes(self, nodes, routes, whiteSpaceFactor=1.2):
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
297 """
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
298 Private method to arrange the shapes on the canvas.
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
299
8286
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
300 The algorithm is borrowed from Boa Constructor.
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
301
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
302 @param nodes list of nodes to arrange
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
303 @type list of str
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
304 @param routes list of routes
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
305 @type list of tuple of (str, str)
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
306 @param whiteSpaceFactor factor to increase whitespace between
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
307 items
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
308 @type float
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
309 """
8286
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
310 from . import GraphicsUtilities
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
311 generations = GraphicsUtilities.sort(nodes, routes)
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
312
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
313 # calculate width and height of all elements
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
314 sizes = []
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
315 for generation in generations:
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
316 sizes.append([])
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
317 for child in generation:
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
318 sizes[-1].append(
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
319 self.__shapes[child][0].sceneBoundingRect())
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
320
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
321 # calculate total width and total height
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
322 width = 0
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
323 height = 0
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
324 widths = []
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
325 heights = []
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
326 for generation in sizes:
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
327 currentWidth = 0
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
328 currentHeight = 0
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
329
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
330 for rect in generation:
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
331 if rect.height() > currentHeight:
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
332 currentHeight = rect.height()
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
333 currentWidth += rect.width()
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
334
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
335 # update totals
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
336 if currentWidth > width:
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
337 width = currentWidth
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
338 height += currentHeight
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
339
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
340 # store generation info
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
341 widths.append(currentWidth)
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
342 heights.append(currentHeight)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
343
8286
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
344 # add in some whitespace
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
345 width *= whiteSpaceFactor
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
346 height = height * whiteSpaceFactor - 20
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
347 verticalWhiteSpace = 40.0
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
348
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
349 sceneRect = self.umlView.sceneRect()
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
350 width += 50.0
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
351 height += 50.0
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
352 swidth = sceneRect.width() if width < sceneRect.width() else width
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
353 sheight = sceneRect.height() if height < sceneRect.height() else height
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
354 self.umlView.setSceneSize(swidth, sheight)
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
355
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
356 # distribute each generation across the width and the
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
357 # generations across height
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
358 y = 10.0
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
359 for currentWidth, currentHeight, generation in (
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
360 zip(reversed(widths), reversed(heights), reversed(generations))
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
361 ):
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
362 x = 10.0
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
363 # whiteSpace is the space between any two elements
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
364 whiteSpace = (
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
365 (width - currentWidth - 20) /
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
366 (len(generation) - 1.0 or 2.0)
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
367 )
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
368 for name in generation:
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
369 shape = self.__shapes[name][0]
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
370 shape.setPos(x, y)
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
371 rect = shape.sceneBoundingRect()
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
372 x = x + rect.width() + whiteSpace
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
373 y = y + currentHeight + verticalWhiteSpace
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
374
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
375 def __createAssociations(self, routes):
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
376 """
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
377 Private method to generate the associations between the module shapes.
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
378
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
379 @param routes list of associations
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
380 @type list of tuple of (str, str)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
381 """
8270
6ba3564b7161 Modernized some more code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8220
diff changeset
382 from .AssociationItem import AssociationItem, AssociationType
8286
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
383 for route in routes:
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
384 assoc = AssociationItem(
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
385 self.__shapes[route[0]][0],
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
386 self.__shapes[route[1]][0],
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
387 AssociationType.IMPORTS,
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
388 colors=self.umlView.getDrawingColors())
62ae22eae123 UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8270
diff changeset
389 self.scene.addItem(assoc)
2033
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
390
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
391 def getPersistenceData(self):
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
392 """
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
393 Public method to get a string for data to be persisted.
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
394
8287
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8286
diff changeset
395 @return persisted data string
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8286
diff changeset
396 @rtype str
2033
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
397 """
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
398 return "project={0}, no_modules={1}".format(
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
399 self.project.getProjectFile(), self.noModules)
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
400
2034
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
401 def parsePersistenceData(self, version, data):
2033
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
402 """
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
403 Public method to parse persisted data.
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
404
8287
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8286
diff changeset
405 @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
406 @type str
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8286
diff changeset
407 @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
408 @type str
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8286
diff changeset
409 @return flag indicating success
30eb7bc13d63 Changed some source docu string to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8286
diff changeset
410 @rtype bool
2033
4b99609f6a87 Some more refactorings to prepare loading graphics diagrams from file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2031
diff changeset
411 """
2034
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
412 parts = data.split(", ")
7254
f00d825fbdb3 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
413 if (
f00d825fbdb3 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
414 len(parts) != 2 or
f00d825fbdb3 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
415 not parts[0].startswith("project=") or
f00d825fbdb3 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
416 not parts[1].startswith("no_modules=")
f00d825fbdb3 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
417 ):
2034
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
418 return False
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
419
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
420 projectFile = parts[0].split("=", 1)[1].strip()
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
421 if projectFile != self.project.getProjectFile():
3020
542e97d4ecb3 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2992
diff changeset
422 res = E5MessageBox.yesNo(
542e97d4ecb3 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2992
diff changeset
423 None,
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
424 self.tr("Load Diagram"),
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
425 self.tr(
2992
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2953
diff changeset
426 """<p>The diagram belongs to the project <b>{0}</b>."""
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2953
diff changeset
427 """ Shall this project be opened?</p>""").format(
2034
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
428 projectFile))
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
429 if res:
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
430 self.project.openProject(projectFile)
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
431
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
432 self.noModules = Utilities.toBool(parts[1].split("=", 1)[1].strip())
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
433
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
434 self.initialize()
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
435
8de0fc1f7fef Implemented functions to load UML graphics from disc.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2033
diff changeset
436 return True
8291
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8287
diff changeset
437
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8287
diff changeset
438 def toDict(self):
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8287
diff changeset
439 """
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8287
diff changeset
440 Public method to collect data to be persisted.
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8287
diff changeset
441
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8287
diff changeset
442 @return dictionary containing data to be persisted
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8287
diff changeset
443 @rtype dict
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8287
diff changeset
444 """
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8287
diff changeset
445 return {
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8287
diff changeset
446 "project_name": self.project.getProjectName(),
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8287
diff changeset
447 "no_modules": self.noModules,
3d79b1e5bf3c UML Diagrams
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8287
diff changeset
448 }

eric ide

mercurial