18 |
18 |
19 from E5Gui.E5Application import e5App |
19 from E5Gui.E5Application import e5App |
20 from E5Gui import E5MessageBox |
20 from E5Gui import E5MessageBox |
21 from E5Gui.E5ProgressDialog import E5ProgressDialog |
21 from E5Gui.E5ProgressDialog import E5ProgressDialog |
22 |
22 |
23 from .ProjectBrowserModel import ProjectBrowserFileItem, \ |
23 from .ProjectBrowserModel import ( |
24 ProjectBrowserSimpleDirectoryItem, ProjectBrowserDirectoryItem, \ |
24 ProjectBrowserFileItem, ProjectBrowserSimpleDirectoryItem, |
25 ProjectBrowserProtocolsType |
25 ProjectBrowserDirectoryItem, ProjectBrowserProtocolsType |
|
26 ) |
26 from .ProjectBaseBrowser import ProjectBaseBrowser |
27 from .ProjectBaseBrowser import ProjectBaseBrowser |
27 |
28 |
28 from UI.BrowserModel import BrowserFileItem, BrowserClassItem, \ |
29 from UI.BrowserModel import ( |
29 BrowserMethodItem, BrowserClassAttributeItem |
30 BrowserFileItem, BrowserClassItem, BrowserMethodItem, |
|
31 BrowserClassAttributeItem |
|
32 ) |
30 import UI.PixmapCache |
33 import UI.PixmapCache |
31 |
34 |
32 import Preferences |
35 import Preferences |
33 import Utilities |
36 import Utilities |
34 |
37 |
58 @type QWidget |
61 @type QWidget |
59 """ |
62 """ |
60 ProjectBaseBrowser.__init__(self, project, |
63 ProjectBaseBrowser.__init__(self, project, |
61 ProjectBrowserProtocolsType, parent) |
64 ProjectBrowserProtocolsType, parent) |
62 |
65 |
63 self.selectedItemsFilter = \ |
66 self.selectedItemsFilter = [ProjectBrowserFileItem, |
64 [ProjectBrowserFileItem, ProjectBrowserSimpleDirectoryItem] |
67 ProjectBrowserSimpleDirectoryItem] |
65 |
68 |
66 self.setWindowTitle(self.tr('Protocols (protobuf)')) |
69 self.setWindowTitle(self.tr('Protocols (protobuf)')) |
67 |
70 |
68 self.setWhatsThis(self.tr( |
71 self.setWhatsThis(self.tr( |
69 """<b>Project Protocols Browser</b>""" |
72 """<b>Project Protocols Browser</b>""" |
296 [ProjectBrowserFileItem, BrowserClassItem, |
299 [ProjectBrowserFileItem, BrowserClassItem, |
297 BrowserMethodItem, ProjectBrowserSimpleDirectoryItem]) |
300 BrowserMethodItem, ProjectBrowserSimpleDirectoryItem]) |
298 cnt = categories["sum"] |
301 cnt = categories["sum"] |
299 |
302 |
300 bfcnt = categories[str(ProjectBrowserFileItem)] |
303 bfcnt = categories[str(ProjectBrowserFileItem)] |
301 cmcnt = categories[str(BrowserClassItem)] + \ |
304 cmcnt = ( |
|
305 categories[str(BrowserClassItem)] + |
302 categories[str(BrowserMethodItem)] |
306 categories[str(BrowserMethodItem)] |
|
307 ) |
303 sdcnt = categories[str(ProjectBrowserSimpleDirectoryItem)] |
308 sdcnt = categories[str(ProjectBrowserSimpleDirectoryItem)] |
304 if cnt > 1 and cnt == bfcnt: |
309 if cnt > 1 and cnt == bfcnt: |
305 self.multiMenu.popup(self.mapToGlobal(coord)) |
310 self.multiMenu.popup(self.mapToGlobal(coord)) |
306 elif cnt > 1 and cnt == sdcnt: |
311 elif cnt > 1 and cnt == sdcnt: |
307 self.dirMultiMenu.popup(self.mapToGlobal(coord)) |
312 self.dirMultiMenu.popup(self.mapToGlobal(coord)) |
310 if cnt == 1 and index.isValid(): |
315 if cnt == 1 and index.isValid(): |
311 if bfcnt == 1 or cmcnt == 1: |
316 if bfcnt == 1 or cmcnt == 1: |
312 itm = self.model().item(index) |
317 itm = self.model().item(index) |
313 if isinstance(itm, ProjectBrowserFileItem): |
318 if isinstance(itm, ProjectBrowserFileItem): |
314 self.sourceMenu.popup(self.mapToGlobal(coord)) |
319 self.sourceMenu.popup(self.mapToGlobal(coord)) |
315 elif isinstance(itm, BrowserClassItem) or \ |
320 elif isinstance( |
316 isinstance(itm, BrowserMethodItem): |
321 itm, |
|
322 (BrowserClassItem, BrowserMethodItem) |
|
323 ): |
317 self.menu.popup(self.mapToGlobal(coord)) |
324 self.menu.popup(self.mapToGlobal(coord)) |
318 else: |
325 else: |
319 self.backMenu.popup(self.mapToGlobal(coord)) |
326 self.backMenu.popup(self.mapToGlobal(coord)) |
320 elif sdcnt == 1: |
327 elif sdcnt == 1: |
321 self.dirMenu.popup(self.mapToGlobal(coord)) |
328 self.dirMenu.popup(self.mapToGlobal(coord)) |
390 def __addProtocolFiles(self): |
397 def __addProtocolFiles(self): |
391 """ |
398 """ |
392 Private method to add protocol files to the project. |
399 Private method to add protocol files to the project. |
393 """ |
400 """ |
394 itm = self.model().item(self.currentIndex()) |
401 itm = self.model().item(self.currentIndex()) |
395 if isinstance(itm, ProjectBrowserFileItem) or \ |
402 if isinstance( |
396 isinstance(itm, BrowserClassItem) or \ |
403 itm, |
397 isinstance(itm, BrowserMethodItem): |
404 (ProjectBrowserFileItem, BrowserClassItem, BrowserMethodItem) |
|
405 ): |
398 dn = os.path.dirname(itm.fileName()) |
406 dn = os.path.dirname(itm.fileName()) |
399 elif isinstance(itm, ProjectBrowserSimpleDirectoryItem) or \ |
407 elif isinstance( |
400 isinstance(itm, ProjectBrowserDirectoryItem): |
408 itm, |
|
409 (ProjectBrowserSimpleDirectoryItem, ProjectBrowserDirectoryItem) |
|
410 ): |
401 dn = itm.dirName() |
411 dn = itm.dirName() |
402 else: |
412 else: |
403 dn = None |
413 dn = None |
404 self.project.addFiles('protocol', dn) |
414 self.project.addFiles('protocol', dn) |
405 |
415 |
406 def __addProtocolsDirectory(self): |
416 def __addProtocolsDirectory(self): |
407 """ |
417 """ |
408 Private method to add protocol files of a directory to the project. |
418 Private method to add protocol files of a directory to the project. |
409 """ |
419 """ |
410 itm = self.model().item(self.currentIndex()) |
420 itm = self.model().item(self.currentIndex()) |
411 if isinstance(itm, ProjectBrowserFileItem) or \ |
421 if isinstance( |
412 isinstance(itm, BrowserClassItem) or \ |
422 itm, |
413 isinstance(itm, BrowserMethodItem): |
423 (ProjectBrowserFileItem, BrowserClassItem, BrowserMethodItem) |
|
424 ): |
414 dn = os.path.dirname(itm.fileName()) |
425 dn = os.path.dirname(itm.fileName()) |
415 elif isinstance(itm, ProjectBrowserSimpleDirectoryItem) or \ |
426 elif isinstance( |
416 isinstance(itm, ProjectBrowserDirectoryItem): |
427 itm, |
|
428 (ProjectBrowserSimpleDirectoryItem, ProjectBrowserDirectoryItem) |
|
429 ): |
417 dn = itm.dirName() |
430 dn = itm.dirName() |
418 else: |
431 else: |
419 dn = None |
432 dn = None |
420 self.project.addDirectory('protocol', dn) |
433 self.project.addDirectory('protocol', dn) |
421 |
434 |
431 fn2 = itm.fileName() |
444 fn2 = itm.fileName() |
432 fullNames.append(fn2) |
445 fullNames.append(fn2) |
433 fn = self.project.getRelativePath(fn2) |
446 fn = self.project.getRelativePath(fn2) |
434 files.append(fn) |
447 files.append(fn) |
435 |
448 |
436 from UI.DeleteFilesConfirmationDialog import \ |
449 from UI.DeleteFilesConfirmationDialog import ( |
437 DeleteFilesConfirmationDialog |
450 DeleteFilesConfirmationDialog |
|
451 ) |
438 dlg = DeleteFilesConfirmationDialog( |
452 dlg = DeleteFilesConfirmationDialog( |
439 self.parent(), |
453 self.parent(), |
440 self.tr("Delete Protocols"), |
454 self.tr("Delete Protocols"), |
441 self.tr("Do you really want to delete these protocol files from" |
455 self.tr("Do you really want to delete these protocol files from" |
442 " the project?"), |
456 " the project?"), |
469 exe = sys.executable |
483 exe = sys.executable |
470 exeArgs = ['-m', 'grpc_tools.protoc'] |
484 exeArgs = ['-m', 'grpc_tools.protoc'] |
471 else: |
485 else: |
472 exe = Preferences.getProtobuf("protoc") |
486 exe = Preferences.getProtobuf("protoc") |
473 if exe == "": |
487 if exe == "": |
474 exe = Utilities.isWindowsPlatform() and \ |
488 exe = ( |
|
489 Utilities.isWindowsPlatform() and |
475 "protoc.exe" or "protoc" |
490 "protoc.exe" or "protoc" |
|
491 ) |
476 if not Utilities.isinpath(exe): |
492 if not Utilities.isinpath(exe): |
477 exe = None |
493 exe = None |
478 |
494 |
479 return exe, exeArgs |
495 return exe, exeArgs |
480 |
496 |