Project/ProjectSourcesBrowser.py

changeset 945
8cd4d08fa9f6
parent 825
9cdec3c5bc07
child 949
f888270da22e
equal deleted inserted replaced
944:1b59c4ba121e 945:8cd4d08fa9f6
33 from .ProjectBaseBrowser import ProjectBaseBrowser 33 from .ProjectBaseBrowser import ProjectBaseBrowser
34 from .NewPythonPackageDialog import NewPythonPackageDialog 34 from .NewPythonPackageDialog import NewPythonPackageDialog
35 35
36 import Utilities 36 import Utilities
37 37
38
38 class ProjectSourcesBrowser(ProjectBaseBrowser): 39 class ProjectSourcesBrowser(ProjectBaseBrowser):
39 """ 40 """
40 A class used to display the Sources part of the project. 41 A class used to display the Sources part of the project.
41 42
42 @signal closeSourceWindow(str) emitted after a file has been removed/deleted 43 @signal closeSourceWindow(str) emitted after a file has been removed/deleted
43 from the project 44 from the project
44 @signal showMenu(str, QMenu) emitted when a menu is about to be shown. The name 45 @signal showMenu(str, QMenu) emitted when a menu is about to be shown. The name
45 of the menu and a reference to the menu are given. 46 of the menu and a reference to the menu are given.
46 @signal sourceFile(str) emitted to open the given file. 47 @signal sourceFile(str) emitted to open the given file.
47 @signal sourceFile(str, int) emitted to open the given file at the given line. 48 @signal sourceFile(str, int) emitted to open the given file at the given line.
50 """ 51 """
51 closeSourceWindow = pyqtSignal(str) 52 closeSourceWindow = pyqtSignal(str)
52 showMenu = pyqtSignal(str, QMenu) 53 showMenu = pyqtSignal(str, QMenu)
53 sourceFile = pyqtSignal((str, ), (str, int), (str, int, str)) 54 sourceFile = pyqtSignal((str, ), (str, int), (str, int, str))
54 55
55 def __init__(self, project, parent = None): 56 def __init__(self, project, parent=None):
56 """ 57 """
57 Constructor 58 Constructor
58 59
59 @param project reference to the project object 60 @param project reference to the project object
60 @param parent parent widget of this browser (QWidget) 61 @param parent parent widget of this browser (QWidget)
73 )) 74 ))
74 75
75 project.prepareRepopulateItem.connect(self._prepareRepopulateItem) 76 project.prepareRepopulateItem.connect(self._prepareRepopulateItem)
76 project.completeRepopulateItem.connect(self._completeRepopulateItem) 77 project.completeRepopulateItem.connect(self._completeRepopulateItem)
77 78
78 self.codemetrics = None 79 self.codemetrics = None
79 self.codecoverage = None 80 self.codecoverage = None
80 self.profiledata = None 81 self.profiledata = None
81 self.classDiagram = None 82 self.classDiagram = None
82 self.importsDiagram = None 83 self.importsDiagram = None
83 self.packageDiagram = None 84 self.packageDiagram = None
84 self.applicationDiagram = None 85 self.applicationDiagram = None
85 86
86 def __closeAllWindows(self): 87 def __closeAllWindows(self):
87 """ 88 """
88 Private method to close all project related windows. 89 Private method to close all project related windows.
143 self.unittestAction = self.sourceMenu.addAction( 144 self.unittestAction = self.sourceMenu.addAction(
144 self.trUtf8('Run unittest...'), self.handleUnittest) 145 self.trUtf8('Run unittest...'), self.handleUnittest)
145 self.sourceMenu.addSeparator() 146 self.sourceMenu.addSeparator()
146 act = self.sourceMenu.addAction(self.trUtf8('Rename file'), self._renameFile) 147 act = self.sourceMenu.addAction(self.trUtf8('Rename file'), self._renameFile)
147 self.menuActions.append(act) 148 self.menuActions.append(act)
148 act = self.sourceMenu.addAction(self.trUtf8('Remove from project'), 149 act = self.sourceMenu.addAction(self.trUtf8('Remove from project'),
149 self._removeFile) 150 self._removeFile)
150 self.menuActions.append(act) 151 self.menuActions.append(act)
151 act = self.sourceMenu.addAction(self.trUtf8('Delete'), self.__deleteFile) 152 act = self.sourceMenu.addAction(self.trUtf8('Delete'), self.__deleteFile)
152 self.menuActions.append(act) 153 self.menuActions.append(act)
153 self.sourceMenu.addSeparator() 154 self.sourceMenu.addSeparator()
154 self.sourceMenu.addAction(self.trUtf8('New package...'), 155 self.sourceMenu.addAction(self.trUtf8('New package...'),
155 self.__addNewPackage) 156 self.__addNewPackage)
156 self.sourceMenu.addAction(self.trUtf8('Add source files...'), 157 self.sourceMenu.addAction(self.trUtf8('Add source files...'),
157 self.__addSourceFiles) 158 self.__addSourceFiles)
158 self.sourceMenu.addAction(self.trUtf8('Add source directory...'), 159 self.sourceMenu.addAction(self.trUtf8('Add source directory...'),
159 self.__addSourceDirectory) 160 self.__addSourceDirectory)
160 self.sourceMenu.addSeparator() 161 self.sourceMenu.addSeparator()
161 act = self.sourceMenu.addMenu(self.graphicsMenu) 162 act = self.sourceMenu.addMenu(self.graphicsMenu)
162 self.sourceMenu.addSeparator() 163 self.sourceMenu.addSeparator()
163 self.sourceMenu.addMenu(self.checksMenu) 164 self.sourceMenu.addMenu(self.checksMenu)
164 self.sourceMenu.addSeparator() 165 self.sourceMenu.addSeparator()
165 self.sourceMenuActions["Show"] = \ 166 self.sourceMenuActions["Show"] = \
166 self.sourceMenu.addMenu(self.menuShow) 167 self.sourceMenu.addMenu(self.menuShow)
167 self.sourceMenu.addSeparator() 168 self.sourceMenu.addSeparator()
168 self.sourceMenu.addAction(self.trUtf8('Copy Path to Clipboard'), 169 self.sourceMenu.addAction(self.trUtf8('Copy Path to Clipboard'),
169 self._copyToClipboard) 170 self._copyToClipboard)
170 self.sourceMenu.addSeparator() 171 self.sourceMenu.addSeparator()
171 self.sourceMenu.addAction(self.trUtf8('Expand all directories'), 172 self.sourceMenu.addAction(self.trUtf8('Expand all directories'),
172 self._expandAllDirs) 173 self._expandAllDirs)
173 self.sourceMenu.addAction(self.trUtf8('Collapse all directories'), 174 self.sourceMenu.addAction(self.trUtf8('Collapse all directories'),
174 self._collapseAllDirs) 175 self._collapseAllDirs)
175 self.sourceMenu.addSeparator() 176 self.sourceMenu.addSeparator()
176 self.sourceMenu.addAction(self.trUtf8('Configure...'), self._configure) 177 self.sourceMenu.addAction(self.trUtf8('Configure...'), self._configure)
177 178
178 self.menu.addSeparator() 179 self.menu.addSeparator()
179 self.menu.addAction(self.trUtf8('New package...'), 180 self.menu.addAction(self.trUtf8('New package...'),
180 self.__addNewPackage) 181 self.__addNewPackage)
181 self.menu.addAction(self.trUtf8('Add source files...'), 182 self.menu.addAction(self.trUtf8('Add source files...'),
182 self.__addSourceFiles) 183 self.__addSourceFiles)
183 self.menu.addAction(self.trUtf8('Add source directory...'), 184 self.menu.addAction(self.trUtf8('Add source directory...'),
184 self.__addSourceDirectory) 185 self.__addSourceDirectory)
185 self.menu.addSeparator() 186 self.menu.addSeparator()
186 self.menu.addAction(self.trUtf8('Expand all directories'), 187 self.menu.addAction(self.trUtf8('Expand all directories'),
187 self._expandAllDirs) 188 self._expandAllDirs)
188 self.menu.addAction(self.trUtf8('Collapse all directories'), 189 self.menu.addAction(self.trUtf8('Collapse all directories'),
189 self._collapseAllDirs) 190 self._collapseAllDirs)
190 self.menu.addSeparator() 191 self.menu.addSeparator()
191 self.menu.addAction(self.trUtf8('Configure...'), self._configure) 192 self.menu.addAction(self.trUtf8('Configure...'), self._configure)
192 193
193 self.backMenu = QMenu(self) 194 self.backMenu = QMenu(self)
194 self.backMenu.addAction(self.trUtf8('New package...'), 195 self.backMenu.addAction(self.trUtf8('New package...'),
195 self.__addNewPackage) 196 self.__addNewPackage)
196 self.backMenu.addAction(self.trUtf8('Add source files...'), 197 self.backMenu.addAction(self.trUtf8('Add source files...'),
197 self.project.addSourceFiles) 198 self.project.addSourceFiles)
198 self.backMenu.addAction(self.trUtf8('Add source directory...'), 199 self.backMenu.addAction(self.trUtf8('Add source directory...'),
199 self.project.addSourceDir) 200 self.project.addSourceDir)
200 self.backMenu.addSeparator() 201 self.backMenu.addSeparator()
201 self.backMenu.addAction(self.trUtf8('Expand all directories'), 202 self.backMenu.addAction(self.trUtf8('Expand all directories'),
202 self._expandAllDirs) 203 self._expandAllDirs)
203 self.backMenu.addAction(self.trUtf8('Collapse all directories'), 204 self.backMenu.addAction(self.trUtf8('Collapse all directories'),
204 self._collapseAllDirs) 205 self._collapseAllDirs)
205 self.backMenu.addSeparator() 206 self.backMenu.addSeparator()
206 self.backMenu.addAction(self.trUtf8('Configure...'), self._configure) 207 self.backMenu.addAction(self.trUtf8('Configure...'), self._configure)
207 self.backMenu.setEnabled(False) 208 self.backMenu.setEnabled(False)
208 209
209 self.multiMenu.addSeparator() 210 self.multiMenu.addSeparator()
210 act = self.multiMenu.addAction(self.trUtf8('Remove from project'), 211 act = self.multiMenu.addAction(self.trUtf8('Remove from project'),
211 self._removeFile) 212 self._removeFile)
212 self.multiMenuActions.append(act) 213 self.multiMenuActions.append(act)
213 act = self.multiMenu.addAction(self.trUtf8('Delete'), self.__deleteFile) 214 act = self.multiMenu.addAction(self.trUtf8('Delete'), self.__deleteFile)
214 self.multiMenuActions.append(act) 215 self.multiMenuActions.append(act)
215 self.multiMenu.addSeparator() 216 self.multiMenu.addSeparator()
216 self.multiMenu.addAction(self.trUtf8('Expand all directories'), 217 self.multiMenu.addAction(self.trUtf8('Expand all directories'),
217 self._expandAllDirs) 218 self._expandAllDirs)
218 self.multiMenu.addAction(self.trUtf8('Collapse all directories'), 219 self.multiMenu.addAction(self.trUtf8('Collapse all directories'),
219 self._collapseAllDirs) 220 self._collapseAllDirs)
220 self.multiMenu.addSeparator() 221 self.multiMenu.addSeparator()
221 self.multiMenu.addAction(self.trUtf8('Configure...'), self._configure) 222 self.multiMenu.addAction(self.trUtf8('Configure...'), self._configure)
222 223
223 self.dirMenu = QMenu(self) 224 self.dirMenu = QMenu(self)
224 act = self.dirMenu.addAction(self.trUtf8('Remove from project'), self._removeDir) 225 act = self.dirMenu.addAction(self.trUtf8('Remove from project'), self._removeDir)
225 self.dirMenuActions.append(act) 226 self.dirMenuActions.append(act)
226 self.dirMenu.addSeparator() 227 self.dirMenu.addSeparator()
227 self.dirMenu.addAction(self.trUtf8('New package...'), self.__addNewPackage) 228 self.dirMenu.addAction(self.trUtf8('New package...'), self.__addNewPackage)
228 self.dirMenu.addAction(self.trUtf8('Add source files...'), self.__addSourceFiles) 229 self.dirMenu.addAction(self.trUtf8('Add source files...'), self.__addSourceFiles)
229 self.dirMenu.addAction(self.trUtf8('Add source directory...'), 230 self.dirMenu.addAction(self.trUtf8('Add source directory...'),
230 self.__addSourceDirectory) 231 self.__addSourceDirectory)
231 self.dirMenu.addSeparator() 232 self.dirMenu.addSeparator()
232 act = self.dirMenu.addMenu(self.graphicsMenu) 233 act = self.dirMenu.addMenu(self.graphicsMenu)
233 self.dirMenu.addSeparator() 234 self.dirMenu.addSeparator()
234 self.dirMenu.addMenu(self.checksMenu) 235 self.dirMenu.addMenu(self.checksMenu)
235 self.dirMenu.addSeparator() 236 self.dirMenu.addSeparator()
236 self.dirMenu.addAction(self.trUtf8('Copy Path to Clipboard'), 237 self.dirMenu.addAction(self.trUtf8('Copy Path to Clipboard'),
237 self._copyToClipboard) 238 self._copyToClipboard)
238 self.dirMenu.addSeparator() 239 self.dirMenu.addSeparator()
239 self.dirMenu.addAction(self.trUtf8('Expand all directories'), 240 self.dirMenu.addAction(self.trUtf8('Expand all directories'),
240 self._expandAllDirs) 241 self._expandAllDirs)
241 self.dirMenu.addAction(self.trUtf8('Collapse all directories'), 242 self.dirMenu.addAction(self.trUtf8('Collapse all directories'),
242 self._collapseAllDirs) 243 self._collapseAllDirs)
243 self.dirMenu.addSeparator() 244 self.dirMenu.addSeparator()
244 self.dirMenu.addAction(self.trUtf8('Configure...'), self._configure) 245 self.dirMenu.addAction(self.trUtf8('Configure...'), self._configure)
245 246
246 self.dirMultiMenu = QMenu(self) 247 self.dirMultiMenu = QMenu(self)
247 self.dirMultiMenu.addAction(self.trUtf8('Expand all directories'), 248 self.dirMultiMenu.addAction(self.trUtf8('Expand all directories'),
248 self._expandAllDirs) 249 self._expandAllDirs)
249 self.dirMultiMenu.addAction(self.trUtf8('Collapse all directories'), 250 self.dirMultiMenu.addAction(self.trUtf8('Collapse all directories'),
250 self._collapseAllDirs) 251 self._collapseAllDirs)
251 self.dirMultiMenu.addSeparator() 252 self.dirMultiMenu.addSeparator()
252 self.dirMultiMenu.addAction(self.trUtf8('Configure...'), self._configure) 253 self.dirMultiMenu.addAction(self.trUtf8('Configure...'), self._configure)
253 254
254 self.sourceMenu.aboutToShow.connect(self.__showContextMenu) 255 self.sourceMenu.aboutToShow.connect(self.__showContextMenu)
263 Privat method to generate the popup menus for a Ruby project. 264 Privat method to generate the popup menus for a Ruby project.
264 """ 265 """
265 self.graphicsMenu = QMenu(self.trUtf8('Diagrams')) 266 self.graphicsMenu = QMenu(self.trUtf8('Diagrams'))
266 self.classDiagramAction = self.graphicsMenu.addAction( 267 self.classDiagramAction = self.graphicsMenu.addAction(
267 self.trUtf8("Class Diagram..."), self.__showClassDiagram) 268 self.trUtf8("Class Diagram..."), self.__showClassDiagram)
268 self.graphicsMenu.addAction(self.trUtf8("Package Diagram..."), 269 self.graphicsMenu.addAction(self.trUtf8("Package Diagram..."),
269 self.__showPackageDiagram) 270 self.__showPackageDiagram)
270 self.graphicsMenu.addAction(self.trUtf8("Application Diagram..."), 271 self.graphicsMenu.addAction(self.trUtf8("Application Diagram..."),
271 self.__showApplicationDiagram) 272 self.__showApplicationDiagram)
272 273
273 self.sourceMenu.addSeparator() 274 self.sourceMenu.addSeparator()
274 act = self.sourceMenu.addAction(self.trUtf8('Rename file'), self._renameFile) 275 act = self.sourceMenu.addAction(self.trUtf8('Rename file'), self._renameFile)
275 self.menuActions.append(act) 276 self.menuActions.append(act)
276 act = self.sourceMenu.addAction(self.trUtf8('Remove from project'), 277 act = self.sourceMenu.addAction(self.trUtf8('Remove from project'),
277 self._removeFile) 278 self._removeFile)
278 self.menuActions.append(act) 279 self.menuActions.append(act)
279 act = self.sourceMenu.addAction(self.trUtf8('Delete'), self.__deleteFile) 280 act = self.sourceMenu.addAction(self.trUtf8('Delete'), self.__deleteFile)
280 self.menuActions.append(act) 281 self.menuActions.append(act)
281 self.sourceMenu.addSeparator() 282 self.sourceMenu.addSeparator()
282 self.sourceMenu.addAction(self.trUtf8('Add source files...'), 283 self.sourceMenu.addAction(self.trUtf8('Add source files...'),
283 self.__addSourceFiles) 284 self.__addSourceFiles)
284 self.sourceMenu.addAction(self.trUtf8('Add source directory...'), 285 self.sourceMenu.addAction(self.trUtf8('Add source directory...'),
285 self.__addSourceDirectory) 286 self.__addSourceDirectory)
286 self.sourceMenu.addSeparator() 287 self.sourceMenu.addSeparator()
287 act = self.sourceMenu.addMenu(self.graphicsMenu) 288 act = self.sourceMenu.addMenu(self.graphicsMenu)
288 self.sourceMenu.addSeparator() 289 self.sourceMenu.addSeparator()
289 self.sourceMenu.addAction(self.trUtf8('Expand all directories'), 290 self.sourceMenu.addAction(self.trUtf8('Expand all directories'),
290 self._expandAllDirs) 291 self._expandAllDirs)
291 self.sourceMenu.addAction(self.trUtf8('Collapse all directories'), 292 self.sourceMenu.addAction(self.trUtf8('Collapse all directories'),
292 self._collapseAllDirs) 293 self._collapseAllDirs)
293 self.sourceMenu.addSeparator() 294 self.sourceMenu.addSeparator()
294 self.sourceMenu.addAction(self.trUtf8('Configure...'), self._configure) 295 self.sourceMenu.addAction(self.trUtf8('Configure...'), self._configure)
295 296
296 self.menu.addSeparator() 297 self.menu.addSeparator()
297 self.menu.addAction(self.trUtf8('Add source files...'), self.__addSourceFiles) 298 self.menu.addAction(self.trUtf8('Add source files...'), self.__addSourceFiles)
298 self.menu.addAction(self.trUtf8('Add source directory...'), 299 self.menu.addAction(self.trUtf8('Add source directory...'),
299 self.__addSourceDirectory) 300 self.__addSourceDirectory)
300 self.menu.addSeparator() 301 self.menu.addSeparator()
301 self.menu.addAction(self.trUtf8('Expand all directories'), 302 self.menu.addAction(self.trUtf8('Expand all directories'),
302 self._expandAllDirs) 303 self._expandAllDirs)
303 self.menu.addAction(self.trUtf8('Collapse all directories'), 304 self.menu.addAction(self.trUtf8('Collapse all directories'),
304 self._collapseAllDirs) 305 self._collapseAllDirs)
305 self.menu.addSeparator() 306 self.menu.addSeparator()
306 self.menu.addAction(self.trUtf8('Configure...'), self._configure) 307 self.menu.addAction(self.trUtf8('Configure...'), self._configure)
307 308
308 self.backMenu = QMenu(self) 309 self.backMenu = QMenu(self)
309 self.backMenu.addAction(self.trUtf8('Add source files...'), 310 self.backMenu.addAction(self.trUtf8('Add source files...'),
310 self.project.addSourceFiles) 311 self.project.addSourceFiles)
311 self.backMenu.addAction(self.trUtf8('Add source directory...'), 312 self.backMenu.addAction(self.trUtf8('Add source directory...'),
312 self.project.addSourceDir) 313 self.project.addSourceDir)
313 self.backMenu.addSeparator() 314 self.backMenu.addSeparator()
314 self.backMenu.addAction(self.trUtf8('Expand all directories'), 315 self.backMenu.addAction(self.trUtf8('Expand all directories'),
315 self._expandAllDirs) 316 self._expandAllDirs)
316 self.backMenu.addAction(self.trUtf8('Collapse all directories'), 317 self.backMenu.addAction(self.trUtf8('Collapse all directories'),
317 self._collapseAllDirs) 318 self._collapseAllDirs)
318 self.backMenu.setEnabled(False) 319 self.backMenu.setEnabled(False)
319 self.backMenu.addSeparator() 320 self.backMenu.addSeparator()
320 self.backMenu.addAction(self.trUtf8('Configure...'), self._configure) 321 self.backMenu.addAction(self.trUtf8('Configure...'), self._configure)
321 322
322 self.multiMenu.addSeparator() 323 self.multiMenu.addSeparator()
323 act = self.multiMenu.addAction(self.trUtf8('Remove from project'), 324 act = self.multiMenu.addAction(self.trUtf8('Remove from project'),
324 self._removeFile) 325 self._removeFile)
325 self.multiMenuActions.append(act) 326 self.multiMenuActions.append(act)
326 act = self.multiMenu.addAction(self.trUtf8('Delete'), self.__deleteFile) 327 act = self.multiMenu.addAction(self.trUtf8('Delete'), self.__deleteFile)
327 self.multiMenuActions.append(act) 328 self.multiMenuActions.append(act)
328 self.multiMenu.addSeparator() 329 self.multiMenu.addSeparator()
329 self.multiMenu.addAction(self.trUtf8('Expand all directories'), 330 self.multiMenu.addAction(self.trUtf8('Expand all directories'),
330 self._expandAllDirs) 331 self._expandAllDirs)
331 self.multiMenu.addAction(self.trUtf8('Collapse all directories'), 332 self.multiMenu.addAction(self.trUtf8('Collapse all directories'),
332 self._collapseAllDirs) 333 self._collapseAllDirs)
333 self.multiMenu.addSeparator() 334 self.multiMenu.addSeparator()
334 self.multiMenu.addAction(self.trUtf8('Configure...'), self._configure) 335 self.multiMenu.addAction(self.trUtf8('Configure...'), self._configure)
335 336
336 self.dirMenu = QMenu(self) 337 self.dirMenu = QMenu(self)
337 act = self.dirMenu.addAction(self.trUtf8('Remove from project'), self._removeDir) 338 act = self.dirMenu.addAction(self.trUtf8('Remove from project'), self._removeDir)
338 self.dirMenuActions.append(act) 339 self.dirMenuActions.append(act)
339 self.dirMenu.addSeparator() 340 self.dirMenu.addSeparator()
340 self.dirMenu.addAction(self.trUtf8('Add source files...'), self.__addSourceFiles) 341 self.dirMenu.addAction(self.trUtf8('Add source files...'), self.__addSourceFiles)
341 self.dirMenu.addAction(self.trUtf8('Add source directory...'), 342 self.dirMenu.addAction(self.trUtf8('Add source directory...'),
342 self.__addSourceDirectory) 343 self.__addSourceDirectory)
343 self.dirMenu.addSeparator() 344 self.dirMenu.addSeparator()
344 act = self.dirMenu.addMenu(self.graphicsMenu) 345 act = self.dirMenu.addMenu(self.graphicsMenu)
345 self.dirMenu.addSeparator() 346 self.dirMenu.addSeparator()
346 self.dirMenu.addAction(self.trUtf8('Expand all directories'), 347 self.dirMenu.addAction(self.trUtf8('Expand all directories'),
347 self._expandAllDirs) 348 self._expandAllDirs)
348 self.dirMenu.addAction(self.trUtf8('Collapse all directories'), 349 self.dirMenu.addAction(self.trUtf8('Collapse all directories'),
349 self._collapseAllDirs) 350 self._collapseAllDirs)
350 self.dirMenu.addSeparator() 351 self.dirMenu.addSeparator()
351 self.dirMenu.addAction(self.trUtf8('Configure...'), self._configure) 352 self.dirMenu.addAction(self.trUtf8('Configure...'), self._configure)
352 353
353 self.dirMultiMenu = QMenu(self) 354 self.dirMultiMenu = QMenu(self)
354 self.dirMultiMenu.addAction(self.trUtf8('Expand all directories'), 355 self.dirMultiMenu.addAction(self.trUtf8('Expand all directories'),
355 self._expandAllDirs) 356 self._expandAllDirs)
356 self.dirMultiMenu.addAction(self.trUtf8('Collapse all directories'), 357 self.dirMultiMenu.addAction(self.trUtf8('Collapse all directories'),
357 self._collapseAllDirs) 358 self._collapseAllDirs)
358 self.dirMultiMenu.addSeparator() 359 self.dirMultiMenu.addSeparator()
359 self.dirMultiMenu.addAction(self.trUtf8('Configure...'), self._configure) 360 self.dirMultiMenu.addAction(self.trUtf8('Configure...'), self._configure)
360 361
361 self.sourceMenu.aboutToShow.connect(self.__showContextMenu) 362 self.sourceMenu.aboutToShow.connect(self.__showContextMenu)
374 if not self.project.isOpen(): 375 if not self.project.isOpen():
375 return 376 return
376 377
377 try: 378 try:
378 categories = self.getSelectedItemsCountCategorized( 379 categories = self.getSelectedItemsCountCategorized(
379 [ProjectBrowserFileItem, BrowserClassItem, 380 [ProjectBrowserFileItem, BrowserClassItem,
380 BrowserMethodItem, ProjectBrowserSimpleDirectoryItem]) 381 BrowserMethodItem, ProjectBrowserSimpleDirectoryItem])
381 cnt = categories["sum"] 382 cnt = categories["sum"]
382 if cnt <= 1: 383 if cnt <= 1:
383 index = self.indexAt(coord) 384 index = self.indexAt(coord)
384 if index.isValid(): 385 if index.isValid():
385 self._selectSingleItem(index) 386 self._selectSingleItem(index)
386 categories = self.getSelectedItemsCountCategorized( 387 categories = self.getSelectedItemsCountCategorized(
387 [ProjectBrowserFileItem, BrowserClassItem, 388 [ProjectBrowserFileItem, BrowserClassItem,
388 BrowserMethodItem, ProjectBrowserSimpleDirectoryItem]) 389 BrowserMethodItem, ProjectBrowserSimpleDirectoryItem])
389 cnt = categories["sum"] 390 cnt = categories["sum"]
390 391
391 bfcnt = categories[str(ProjectBrowserFileItem)] 392 bfcnt = categories[str(ProjectBrowserFileItem)]
392 cmcnt = categories[str(BrowserClassItem)] + \ 393 cmcnt = categories[str(BrowserClassItem)] + \
521 def _openItem(self): 522 def _openItem(self):
522 """ 523 """
523 Protected slot to handle the open popup menu entry. 524 Protected slot to handle the open popup menu entry.
524 """ 525 """
525 itmList = self.getSelectedItems( 526 itmList = self.getSelectedItems(
526 [BrowserFileItem, BrowserClassItem, BrowserMethodItem, 527 [BrowserFileItem, BrowserClassItem, BrowserMethodItem,
527 BrowserClassAttributeItem]) 528 BrowserClassAttributeItem])
528 529
529 for itm in itmList: 530 for itm in itmList:
530 if isinstance(itm, BrowserFileItem): 531 if isinstance(itm, BrowserFileItem):
531 if itm.isPython2File(): 532 if itm.isPython2File():
538 self.sourceFile[str, int, str].emit(itm.fileName(), 1, "D") 539 self.sourceFile[str, int, str].emit(itm.fileName(), 1, "D")
539 else: 540 else:
540 self.sourceFile[str].emit(itm.fileName()) 541 self.sourceFile[str].emit(itm.fileName())
541 elif isinstance(itm, BrowserClassItem): 542 elif isinstance(itm, BrowserClassItem):
542 self.sourceFile[str, int].emit(itm.fileName(), itm.classObject().lineno) 543 self.sourceFile[str, int].emit(itm.fileName(), itm.classObject().lineno)
543 elif isinstance(itm,BrowserMethodItem): 544 elif isinstance(itm, BrowserMethodItem):
544 self.sourceFile[str, int].emit( 545 self.sourceFile[str, int].emit(
545 itm.fileName(), itm.functionObject().lineno) 546 itm.fileName(), itm.functionObject().lineno)
546 elif isinstance(itm, BrowserClassAttributeItem): 547 elif isinstance(itm, BrowserClassAttributeItem):
547 self.sourceFile[str, int].emit( 548 self.sourceFile[str, int].emit(
548 itm.fileName(), itm.attributeObject().lineno) 549 itm.fileName(), itm.attributeObject().lineno)
585 .format(packagePath, str(err))) 586 .format(packagePath, str(err)))
586 return 587 return
587 packageFile = os.path.join(packagePath, "__init__.py") 588 packageFile = os.path.join(packagePath, "__init__.py")
588 if not os.path.exists(packageFile): 589 if not os.path.exists(packageFile):
589 try: 590 try:
590 f = open(packageFile, "w", encoding = "utf-8") 591 f = open(packageFile, "w", encoding="utf-8")
591 f.close() 592 f.close()
592 except IOError as err: 593 except IOError as err:
593 E5MessageBox.critical(self, 594 E5MessageBox.critical(self,
594 self.trUtf8("Add new Python package"), 595 self.trUtf8("Add new Python package"),
595 self.trUtf8("""<p>The package file <b>{0}</b> could""" 596 self.trUtf8("""<p>The package file <b>{0}</b> could"""
808 except AttributeError: 809 except AttributeError:
809 fn = itm.dirName() 810 fn = itm.dirName()
810 res = E5MessageBox.yesNo(self, 811 res = E5MessageBox.yesNo(self,
811 self.trUtf8("Class Diagram"), 812 self.trUtf8("Class Diagram"),
812 self.trUtf8("""Include class attributes?"""), 813 self.trUtf8("""Include class attributes?"""),
813 yesDefault = True) 814 yesDefault=True)
814 self.classDiagram = UMLClassDiagram(fn, self, noAttrs = not res) 815 self.classDiagram = UMLClassDiagram(fn, self, noAttrs=not res)
815 self.classDiagram.show() 816 self.classDiagram.show()
816 817
817 def __showImportsDiagram(self): 818 def __showImportsDiagram(self):
818 """ 819 """
819 Private method to handle the imports diagram context menu action. 820 Private method to handle the imports diagram context menu action.
825 fn = itm.dirName() 826 fn = itm.dirName()
826 package = os.path.isdir(fn) and fn or os.path.dirname(fn) 827 package = os.path.isdir(fn) and fn or os.path.dirname(fn)
827 res = E5MessageBox.yesNo(self, 828 res = E5MessageBox.yesNo(self,
828 self.trUtf8("Imports Diagram"), 829 self.trUtf8("Imports Diagram"),
829 self.trUtf8("""Include imports from external modules?""")) 830 self.trUtf8("""Include imports from external modules?"""))
830 self.importsDiagram = ImportsDiagram(package, self, 831 self.importsDiagram = ImportsDiagram(package, self,
831 showExternalImports = res) 832 showExternalImports=res)
832 self.importsDiagram.show() 833 self.importsDiagram.show()
833 834
834 def __showPackageDiagram(self): 835 def __showPackageDiagram(self):
835 """ 836 """
836 Private method to handle the package diagram context menu action. 837 Private method to handle the package diagram context menu action.
842 fn = itm.dirName() 843 fn = itm.dirName()
843 package = os.path.isdir(fn) and fn or os.path.dirname(fn) 844 package = os.path.isdir(fn) and fn or os.path.dirname(fn)
844 res = E5MessageBox.yesNo(self, 845 res = E5MessageBox.yesNo(self,
845 self.trUtf8("Package Diagram"), 846 self.trUtf8("Package Diagram"),
846 self.trUtf8("""Include class attributes?"""), 847 self.trUtf8("""Include class attributes?"""),
847 yesDefault = True) 848 yesDefault=True)
848 self.packageDiagram = PackageDiagram(package, self, noAttrs = not res) 849 self.packageDiagram = PackageDiagram(package, self, noAttrs=not res)
849 self.packageDiagram.show() 850 self.packageDiagram.show()
850 851
851 def __showApplicationDiagram(self): 852 def __showApplicationDiagram(self):
852 """ 853 """
853 Private method to handle the application diagram context menu action. 854 Private method to handle the application diagram context menu action.
854 """ 855 """
855 res = E5MessageBox.yesNo(self, 856 res = E5MessageBox.yesNo(self,
856 self.trUtf8("Application Diagram"), 857 self.trUtf8("Application Diagram"),
857 self.trUtf8("""Include module names?"""), 858 self.trUtf8("""Include module names?"""),
858 yesDefault = True) 859 yesDefault=True)
859 self.applicationDiagram = ApplicationDiagram(self.project, self, 860 self.applicationDiagram = ApplicationDiagram(self.project, self,
860 noModules = not res) 861 noModules=not res)
861 self.applicationDiagram.show() 862 self.applicationDiagram.show()

eric ide

mercurial