src/eric7/Project/ProjectSourcesBrowser.py

branch
eric7-maintenance
changeset 10814
ba20efe10336
parent 10694
f46c1e224e8a
parent 10680
306373ccf8fd
child 11019
27cd57e98461
equal deleted inserted replaced
10734:2b015db9761a 10814:ba20efe10336
21 from eric7.EricGui import EricPixmapCache 21 from eric7.EricGui import EricPixmapCache
22 from eric7.EricWidgets import EricMessageBox, EricPathPickerDialog 22 from eric7.EricWidgets import EricMessageBox, EricPathPickerDialog
23 from eric7.EricWidgets.EricApplication import ericApp 23 from eric7.EricWidgets.EricApplication import ericApp
24 from eric7.EricWidgets.EricPathPickerDialog import EricPathPickerModes 24 from eric7.EricWidgets.EricPathPickerDialog import EricPathPickerModes
25 from eric7.Graphics.UMLDialog import UMLDialog, UMLDialogType 25 from eric7.Graphics.UMLDialog import UMLDialog, UMLDialogType
26 from eric7.SystemUtilities import FileSystemUtilities
26 from eric7.UI.BrowserModel import ( 27 from eric7.UI.BrowserModel import (
27 BrowserClassAttributeItem, 28 BrowserClassAttributeItem,
28 BrowserClassItem, 29 BrowserClassItem,
29 BrowserFileItem, 30 BrowserFileItem,
30 BrowserImportItem, 31 BrowserImportItem,
316 self.tr("Add source directory..."), self.__addSourceDirectory 317 self.tr("Add source directory..."), self.__addSourceDirectory
317 ) 318 )
318 self.sourceMenu.addSeparator() 319 self.sourceMenu.addSeparator()
319 self.sourceMenu.addMenu(self.graphicsMenu) 320 self.sourceMenu.addMenu(self.graphicsMenu)
320 self.sourceMenu.addMenu(self.checksMenu) 321 self.sourceMenu.addMenu(self.checksMenu)
321 self.sourceMenu.addMenu(self.formattingMenu) 322 self.sourceMenuActions["Formatting"] = self.sourceMenu.addMenu(
323 self.formattingMenu
324 )
322 self.sourceMenuActions["Show"] = self.sourceMenu.addMenu(self.menuShow) 325 self.sourceMenuActions["Show"] = self.sourceMenu.addMenu(self.menuShow)
323 self.sourceMenu.addSeparator() 326 self.sourceMenu.addSeparator()
324 self.__startAct = self.sourceMenu.addMenu(self.__startMenu) 327 self.__startAct = self.sourceMenu.addMenu(self.__startMenu)
325 self.sourceMenu.addSeparator() 328 self.sourceMenu.addSeparator()
326 self.sourceMenu.addAction( 329 self.__sourceMenuFileManagerAct = self.sourceMenu.addAction(
327 self.tr("Show in File Manager"), self._showInFileManager 330 self.tr("Show in File Manager"), self._showInFileManager
328 ) 331 )
329 self.sourceMenu.addAction( 332 self.sourceMenu.addAction(
330 self.tr("Copy Path to Clipboard"), self._copyToClipboard 333 self.tr("Copy Path to Clipboard"), self._copyToClipboard
331 ) 334 )
347 self.menu.addAction(self.tr("Add source files..."), self.__addSourceFiles) 350 self.menu.addAction(self.tr("Add source files..."), self.__addSourceFiles)
348 self.menu.addAction( 351 self.menu.addAction(
349 self.tr("Add source directory..."), self.__addSourceDirectory 352 self.tr("Add source directory..."), self.__addSourceDirectory
350 ) 353 )
351 self.menu.addSeparator() 354 self.menu.addSeparator()
352 self.menu.addAction(self.tr("Show in File Manager"), self._showInFileManager) 355 self.__menuFileManagerAct = self.menu.addAction(
356 self.tr("Show in File Manager"), self._showInFileManager
357 )
353 self.menu.addSeparator() 358 self.menu.addSeparator()
354 self.menu.addAction(self.tr("Expand all directories"), self._expandAllDirs) 359 self.menu.addAction(self.tr("Expand all directories"), self._expandAllDirs)
355 self.menu.addAction(self.tr("Collapse all directories"), self._collapseAllDirs) 360 self.menu.addAction(self.tr("Collapse all directories"), self._collapseAllDirs)
356 self.menu.addAction(self.tr("Collapse all files"), self._collapseAllFiles) 361 self.menu.addAction(self.tr("Collapse all files"), self._collapseAllFiles)
357 self.menu.addSeparator() 362 self.menu.addSeparator()
377 self.attributeMenu.addAction( 382 self.attributeMenu.addAction(
378 self.tr("Add source directory..."), 383 self.tr("Add source directory..."),
379 lambda: self.project.addDirectory("SOURCES"), 384 lambda: self.project.addDirectory("SOURCES"),
380 ) 385 )
381 self.attributeMenu.addSeparator() 386 self.attributeMenu.addSeparator()
382 self.attributeMenu.addAction( 387 self.__attributeMenuFileManagerAct = self.attributeMenu.addAction(
383 self.tr("Show in File Manager"), self._showInFileManager 388 self.tr("Show in File Manager"), self._showInFileManager
384 ) 389 )
385 self.attributeMenu.addSeparator() 390 self.attributeMenu.addSeparator()
386 self.attributeMenu.addAction( 391 self.attributeMenu.addAction(
387 self.tr("Expand all directories"), self._expandAllDirs 392 self.tr("Expand all directories"), self._expandAllDirs
406 self.backMenu.addAction( 411 self.backMenu.addAction(
407 self.tr("Add source directory..."), 412 self.tr("Add source directory..."),
408 lambda: self.project.addDirectory("SOURCES"), 413 lambda: self.project.addDirectory("SOURCES"),
409 ) 414 )
410 self.backMenu.addSeparator() 415 self.backMenu.addSeparator()
411 self.backMenu.addAction( 416 self.__backMenuFileManagerAct = self.backMenu.addAction(
412 self.tr("Show in File Manager"), self._showProjectInFileManager 417 self.tr("Show in File Manager"), self._showProjectInFileManager
413 ) 418 )
414 self.backMenu.addSeparator() 419 self.backMenu.addSeparator()
415 self.backMenu.addAction(self.tr("Expand all directories"), self._expandAllDirs) 420 self.backMenu.addAction(self.tr("Expand all directories"), self._expandAllDirs)
416 self.backMenu.addAction( 421 self.backMenu.addAction(
426 self.multiMenuActions.append(act) 431 self.multiMenuActions.append(act)
427 act = self.multiMenu.addAction(self.tr("Delete"), self.__deleteFile) 432 act = self.multiMenu.addAction(self.tr("Delete"), self.__deleteFile)
428 self.multiMenuActions.append(act) 433 self.multiMenuActions.append(act)
429 self.multiMenu.addSeparator() 434 self.multiMenu.addSeparator()
430 self.multiMenu.addMenu(self.checksMenu) 435 self.multiMenu.addMenu(self.checksMenu)
431 self.multiMenu.addMenu(self.formattingMenu) 436 self.__multiMenuFormattingAct = self.multiMenu.addMenu(self.formattingMenu)
432 self.multiMenu.addSeparator() 437 self.multiMenu.addSeparator()
433 self.multiMenu.addAction(self.tr("Expand all directories"), self._expandAllDirs) 438 self.multiMenu.addAction(self.tr("Expand all directories"), self._expandAllDirs)
434 self.multiMenu.addAction( 439 self.multiMenu.addAction(
435 self.tr("Collapse all directories"), self._collapseAllDirs 440 self.tr("Collapse all directories"), self._collapseAllDirs
436 ) 441 )
452 self.tr("Add source directory..."), self.__addSourceDirectory 457 self.tr("Add source directory..."), self.__addSourceDirectory
453 ) 458 )
454 self.dirMenu.addSeparator() 459 self.dirMenu.addSeparator()
455 act = self.dirMenu.addMenu(self.graphicsMenu) 460 act = self.dirMenu.addMenu(self.graphicsMenu)
456 self.dirMenu.addMenu(self.checksMenu) 461 self.dirMenu.addMenu(self.checksMenu)
457 self.dirMenu.addMenu(self.formattingMenu) 462 self.__dirMenuFormattingAct = self.dirMenu.addMenu(self.formattingMenu)
458 self.dirMenu.addSeparator() 463 self.dirMenu.addSeparator()
459 self.dirMenu.addAction(self.tr("Show in File Manager"), self._showInFileManager) 464 self.__dirMenuFileManagerAct = self.dirMenu.addAction(
465 self.tr("Show in File Manager"), self._showInFileManager
466 )
460 self.dirMenu.addAction(self.tr("Copy Path to Clipboard"), self._copyToClipboard) 467 self.dirMenu.addAction(self.tr("Copy Path to Clipboard"), self._copyToClipboard)
461 self.dirMenu.addSeparator() 468 self.dirMenu.addSeparator()
462 self.dirMenu.addAction(self.tr("Expand all directories"), self._expandAllDirs) 469 self.dirMenu.addAction(self.tr("Expand all directories"), self._expandAllDirs)
463 self.dirMenu.addAction( 470 self.dirMenu.addAction(
464 self.tr("Collapse all directories"), self._collapseAllDirs 471 self.tr("Collapse all directories"), self._collapseAllDirs
479 ) 486 )
480 self.dirMultiMenu.addSeparator() 487 self.dirMultiMenu.addSeparator()
481 self.dirMultiMenu.addAction(self.tr("Configure..."), self._configure) 488 self.dirMultiMenu.addAction(self.tr("Configure..."), self._configure)
482 489
483 self.sourceMenu.aboutToShow.connect(self.__showContextMenu) 490 self.sourceMenu.aboutToShow.connect(self.__showContextMenu)
491 self.menu.aboutToShow.connect(self.__showContextMenuGeneral)
492 self.attributeMenu.aboutToShow.connect(self.__showContextMenuAttribute)
484 self.multiMenu.aboutToShow.connect(self.__showContextMenuMulti) 493 self.multiMenu.aboutToShow.connect(self.__showContextMenuMulti)
485 self.dirMenu.aboutToShow.connect(self.__showContextMenuDir) 494 self.dirMenu.aboutToShow.connect(self.__showContextMenuDir)
486 self.dirMultiMenu.aboutToShow.connect(self.__showContextMenuDirMulti) 495 self.dirMultiMenu.aboutToShow.connect(self.__showContextMenuDirMulti)
487 self.backMenu.aboutToShow.connect(self.__showContextMenuBack) 496 self.backMenu.aboutToShow.connect(self.__showContextMenuBack)
488 self.mainMenu = self.sourceMenu 497 self.mainMenu = self.sourceMenu
523 self.tr("Add source directory..."), self.__addSourceDirectory 532 self.tr("Add source directory..."), self.__addSourceDirectory
524 ) 533 )
525 self.sourceMenu.addSeparator() 534 self.sourceMenu.addSeparator()
526 act = self.sourceMenu.addMenu(self.graphicsMenu) 535 act = self.sourceMenu.addMenu(self.graphicsMenu)
527 self.sourceMenu.addSeparator() 536 self.sourceMenu.addSeparator()
528 self.sourceMenu.addAction( 537 self.__sourceMenuFileManagerAct = self.sourceMenu.addAction(
529 self.tr("Show in File Manager"), self._showInFileManager 538 self.tr("Show in File Manager"), self._showInFileManager
530 ) 539 )
531 self.sourceMenu.addSeparator() 540 self.sourceMenu.addSeparator()
532 self.sourceMenu.addAction( 541 self.sourceMenu.addAction(
533 self.tr("Expand all directories"), self._expandAllDirs 542 self.tr("Expand all directories"), self._expandAllDirs
543 self.menu.addAction(self.tr("Add source files..."), self.__addSourceFiles) 552 self.menu.addAction(self.tr("Add source files..."), self.__addSourceFiles)
544 self.menu.addAction( 553 self.menu.addAction(
545 self.tr("Add source directory..."), self.__addSourceDirectory 554 self.tr("Add source directory..."), self.__addSourceDirectory
546 ) 555 )
547 self.menu.addSeparator() 556 self.menu.addSeparator()
548 self.menu.addAction(self.tr("Show in File Manager"), self._showInFileManager) 557 self.__menuFileManagerAct = self.menu.addAction(
558 self.tr("Show in File Manager"), self._showInFileManager
559 )
549 self.menu.addSeparator() 560 self.menu.addSeparator()
550 self.menu.addAction(self.tr("Expand all directories"), self._expandAllDirs) 561 self.menu.addAction(self.tr("Expand all directories"), self._expandAllDirs)
551 self.menu.addAction(self.tr("Collapse all directories"), self._collapseAllDirs) 562 self.menu.addAction(self.tr("Collapse all directories"), self._collapseAllDirs)
552 self.menu.addAction(self.tr("Collapse all files"), self._collapseAllFiles) 563 self.menu.addAction(self.tr("Collapse all files"), self._collapseAllFiles)
553 self.menu.addSeparator() 564 self.menu.addSeparator()
568 self.attributeMenu.addAction( 579 self.attributeMenu.addAction(
569 self.tr("Add source directory..."), 580 self.tr("Add source directory..."),
570 lambda: self.project.addDirectory("SOURCES"), 581 lambda: self.project.addDirectory("SOURCES"),
571 ) 582 )
572 self.attributeMenu.addSeparator() 583 self.attributeMenu.addSeparator()
573 self.attributeMenu.addAction( 584 self.__attributeMenuFileManagerAct = self.attributeMenu.addAction(
574 self.tr("Show in File Manager"), self._showInFileManager 585 self.tr("Show in File Manager"), self._showInFileManager
575 ) 586 )
576 self.attributeMenu.addSeparator() 587 self.attributeMenu.addSeparator()
577 self.attributeMenu.addAction( 588 self.attributeMenu.addAction(
578 self.tr("Expand all directories"), self._expandAllDirs 589 self.tr("Expand all directories"), self._expandAllDirs
594 self.backMenu.addAction( 605 self.backMenu.addAction(
595 self.tr("Add source directory..."), 606 self.tr("Add source directory..."),
596 lambda: self.project.addDirectory("SOURCES"), 607 lambda: self.project.addDirectory("SOURCES"),
597 ) 608 )
598 self.backMenu.addSeparator() 609 self.backMenu.addSeparator()
599 self.backMenu.addAction( 610 self.__backMenuFileManagerAct = self.backMenu.addAction(
600 self.tr("Show in File Manager"), self._showProjectInFileManager 611 self.tr("Show in File Manager"), self._showProjectInFileManager
601 ) 612 )
602 self.backMenu.addSeparator() 613 self.backMenu.addSeparator()
603 self.backMenu.addAction(self.tr("Expand all directories"), self._expandAllDirs) 614 self.backMenu.addAction(self.tr("Expand all directories"), self._expandAllDirs)
604 self.backMenu.addAction( 615 self.backMenu.addAction(
632 self.tr("Add source directory..."), self.__addSourceDirectory 643 self.tr("Add source directory..."), self.__addSourceDirectory
633 ) 644 )
634 self.dirMenu.addSeparator() 645 self.dirMenu.addSeparator()
635 act = self.dirMenu.addMenu(self.graphicsMenu) 646 act = self.dirMenu.addMenu(self.graphicsMenu)
636 self.dirMenu.addSeparator() 647 self.dirMenu.addSeparator()
637 self.dirMenu.addAction(self.tr("Show in File Manager"), self._showInFileManager) 648 self.__dirMenuFileManagerAct = self.dirMenu.addAction(
649 self.tr("Show in File Manager"), self._showInFileManager
650 )
638 self.dirMenu.addSeparator() 651 self.dirMenu.addSeparator()
639 self.dirMenu.addAction(self.tr("Expand all directories"), self._expandAllDirs) 652 self.dirMenu.addAction(self.tr("Expand all directories"), self._expandAllDirs)
640 self.dirMenu.addAction( 653 self.dirMenu.addAction(
641 self.tr("Collapse all directories"), self._collapseAllDirs 654 self.tr("Collapse all directories"), self._collapseAllDirs
642 ) 655 )
656 ) 669 )
657 self.dirMultiMenu.addSeparator() 670 self.dirMultiMenu.addSeparator()
658 self.dirMultiMenu.addAction(self.tr("Configure..."), self._configure) 671 self.dirMultiMenu.addAction(self.tr("Configure..."), self._configure)
659 672
660 self.sourceMenu.aboutToShow.connect(self.__showContextMenu) 673 self.sourceMenu.aboutToShow.connect(self.__showContextMenu)
674 self.menu.aboutToShow.connect(self.__showContextMenuGeneral)
675 self.attributeMenu.aboutToShow.connect(self.__showContextMenuAttribute)
661 self.multiMenu.aboutToShow.connect(self.__showContextMenuMulti) 676 self.multiMenu.aboutToShow.connect(self.__showContextMenuMulti)
662 self.dirMenu.aboutToShow.connect(self.__showContextMenuDir) 677 self.dirMenu.aboutToShow.connect(self.__showContextMenuDir)
663 self.dirMultiMenu.aboutToShow.connect(self.__showContextMenuDirMulti) 678 self.dirMultiMenu.aboutToShow.connect(self.__showContextMenuDirMulti)
664 self.backMenu.aboutToShow.connect(self.__showContextMenuBack) 679 self.backMenu.aboutToShow.connect(self.__showContextMenuBack)
665 self.mainMenu = self.sourceMenu 680 self.mainMenu = self.sourceMenu
686 self.tr("Add source directory..."), self.__addSourceDirectory 701 self.tr("Add source directory..."), self.__addSourceDirectory
687 ) 702 )
688 self.sourceMenu.addSeparator() 703 self.sourceMenu.addSeparator()
689 self.sourceMenu.addMenu(self.checksMenu) 704 self.sourceMenu.addMenu(self.checksMenu)
690 self.sourceMenu.addSeparator() 705 self.sourceMenu.addSeparator()
691 self.sourceMenu.addAction( 706 self.__sourceMenuFileManagerAct = self.sourceMenu.addAction(
692 self.tr("Show in File Manager"), self._showInFileManager 707 self.tr("Show in File Manager"), self._showInFileManager
693 ) 708 )
694 self.sourceMenu.addAction( 709 self.sourceMenu.addAction(
695 self.tr("Copy Path to Clipboard"), self._copyToClipboard 710 self.tr("Copy Path to Clipboard"), self._copyToClipboard
696 ) 711 )
709 self.menu.addAction(self.tr("Add source files..."), self.__addSourceFiles) 724 self.menu.addAction(self.tr("Add source files..."), self.__addSourceFiles)
710 self.menu.addAction( 725 self.menu.addAction(
711 self.tr("Add source directory..."), self.__addSourceDirectory 726 self.tr("Add source directory..."), self.__addSourceDirectory
712 ) 727 )
713 self.menu.addSeparator() 728 self.menu.addSeparator()
714 self.menu.addAction(self.tr("Show in File Manager"), self._showInFileManager) 729 self.__menuFileManagerAct = self.menu.addAction(
730 self.tr("Show in File Manager"), self._showInFileManager
731 )
715 self.menu.addSeparator() 732 self.menu.addSeparator()
716 self.menu.addAction(self.tr("Expand all directories"), self._expandAllDirs) 733 self.menu.addAction(self.tr("Expand all directories"), self._expandAllDirs)
717 self.menu.addAction(self.tr("Collapse all directories"), self._collapseAllDirs) 734 self.menu.addAction(self.tr("Collapse all directories"), self._collapseAllDirs)
718 self.menu.addAction(self.tr("Collapse all files"), self._collapseAllFiles) 735 self.menu.addAction(self.tr("Collapse all files"), self._collapseAllFiles)
719 self.menu.addSeparator() 736 self.menu.addSeparator()
734 self.attributeMenu.addAction( 751 self.attributeMenu.addAction(
735 self.tr("Add source directory..."), 752 self.tr("Add source directory..."),
736 lambda: self.project.addDirectory("SOURCES"), 753 lambda: self.project.addDirectory("SOURCES"),
737 ) 754 )
738 self.attributeMenu.addSeparator() 755 self.attributeMenu.addSeparator()
739 self.attributeMenu.addAction( 756 self.__attrMenuFileManagerAct = self.attributeMenu.addAction(
740 self.tr("Show in File Manager"), self._showInFileManager 757 self.tr("Show in File Manager"), self._showInFileManager
741 ) 758 )
742 self.attributeMenu.addSeparator() 759 self.attributeMenu.addSeparator()
743 self.attributeMenu.addAction( 760 self.attributeMenu.addAction(
744 self.tr("Expand all directories"), self._expandAllDirs 761 self.tr("Expand all directories"), self._expandAllDirs
760 self.backMenu.addAction( 777 self.backMenu.addAction(
761 self.tr("Add source directory..."), 778 self.tr("Add source directory..."),
762 lambda: self.project.addDirectory("SOURCES"), 779 lambda: self.project.addDirectory("SOURCES"),
763 ) 780 )
764 self.backMenu.addSeparator() 781 self.backMenu.addSeparator()
765 self.backMenu.addAction( 782 self.__backMenuFileManagerAct = self.backMenu.addAction(
766 self.tr("Show in File Manager"), self._showProjectInFileManager 783 self.tr("Show in File Manager"), self._showProjectInFileManager
767 ) 784 )
768 self.backMenu.addSeparator() 785 self.backMenu.addSeparator()
769 self.backMenu.addAction(self.tr("Expand all directories"), self._expandAllDirs) 786 self.backMenu.addAction(self.tr("Expand all directories"), self._expandAllDirs)
770 self.backMenu.addAction( 787 self.backMenu.addAction(
802 self.tr("Add source directory..."), self.__addSourceDirectory 819 self.tr("Add source directory..."), self.__addSourceDirectory
803 ) 820 )
804 self.dirMenu.addSeparator() 821 self.dirMenu.addSeparator()
805 self.dirMenu.addMenu(self.checksMenu) 822 self.dirMenu.addMenu(self.checksMenu)
806 self.dirMenu.addSeparator() 823 self.dirMenu.addSeparator()
807 self.dirMenu.addAction(self.tr("Show in File Manager"), self._showInFileManager) 824 self.__dirMenuFileManagerAct = self.dirMenu.addAction(
825 self.tr("Show in File Manager"), self._showInFileManager
826 )
808 self.dirMenu.addAction(self.tr("Copy Path to Clipboard"), self._copyToClipboard) 827 self.dirMenu.addAction(self.tr("Copy Path to Clipboard"), self._copyToClipboard)
809 self.dirMenu.addSeparator() 828 self.dirMenu.addSeparator()
810 self.dirMenu.addAction(self.tr("Expand all directories"), self._expandAllDirs) 829 self.dirMenu.addAction(self.tr("Expand all directories"), self._expandAllDirs)
811 self.dirMenu.addAction( 830 self.dirMenu.addAction(
812 self.tr("Collapse all directories"), self._collapseAllDirs 831 self.tr("Collapse all directories"), self._collapseAllDirs
827 ) 846 )
828 self.dirMultiMenu.addSeparator() 847 self.dirMultiMenu.addSeparator()
829 self.dirMultiMenu.addAction(self.tr("Configure..."), self._configure) 848 self.dirMultiMenu.addAction(self.tr("Configure..."), self._configure)
830 849
831 self.sourceMenu.aboutToShow.connect(self.__showContextMenu) 850 self.sourceMenu.aboutToShow.connect(self.__showContextMenu)
851 self.menu.aboutToShow.connect(self.__showContextMenuGeneral)
852 self.attributeMenu.aboutToShow.connect(self.__showContextMenuAttribute)
832 self.multiMenu.aboutToShow.connect(self.__showContextMenuMulti) 853 self.multiMenu.aboutToShow.connect(self.__showContextMenuMulti)
833 self.dirMenu.aboutToShow.connect(self.__showContextMenuDir) 854 self.dirMenu.aboutToShow.connect(self.__showContextMenuDir)
834 self.dirMultiMenu.aboutToShow.connect(self.__showContextMenuDirMulti) 855 self.dirMultiMenu.aboutToShow.connect(self.__showContextMenuDirMulti)
835 self.backMenu.aboutToShow.connect(self.__showContextMenuBack) 856 self.backMenu.aboutToShow.connect(self.__showContextMenuBack)
836 self.mainMenu = self.sourceMenu 857 self.mainMenu = self.sourceMenu
954 except AttributeError: 975 except AttributeError:
955 self.__startAct.setEnabled(False) 976 self.__startAct.setEnabled(False)
956 else: 977 else:
957 self.__startAct.setEnabled(False) 978 self.__startAct.setEnabled(False)
958 979
980 self.sourceMenuActions["Formatting"].setEnabled(
981 self.sourceMenuActions["Formatting"].isEnabled()
982 and not FileSystemUtilities.isRemoteFileName(self.project.getProjectPath())
983 )
984 self.__sourceMenuFileManagerAct.setEnabled(
985 not FileSystemUtilities.isRemoteFileName(self.project.getProjectPath())
986 )
987
959 self.showMenu.emit("Main", self.sourceMenu) 988 self.showMenu.emit("Main", self.sourceMenu)
960 989
990 def __showContextMenuGeneral(self):
991 """
992 Private slot called by the menu aboutToShow signal.
993 """
994 ProjectBaseBrowser._showContextMenu(self, self.menu)
995
996 self.__menuFileManagerAct.setEnabled(
997 not FileSystemUtilities.isRemoteFileName(self.project.getProjectPath())
998 )
999
1000 def __showContextMenuAttribute(self):
1001 """
1002 Private slot called by the attributeMenu aboutToShow signal.
1003 """
1004 ProjectBaseBrowser._showContextMenu(self, self.menu)
1005
1006 self.__attributeMenuFileManagerAct.setEnabled(
1007 not FileSystemUtilities.isRemoteFileName(self.project.getProjectPath())
1008 )
1009
961 def __showContextMenuMulti(self): 1010 def __showContextMenuMulti(self):
962 """ 1011 """
963 Private slot called by the multiMenu aboutToShow signal. 1012 Private slot called by the multiMenu aboutToShow signal.
964 """ 1013 """
965 ProjectBaseBrowser._showContextMenuMulti(self, self.multiMenu) 1014 ProjectBaseBrowser._showContextMenuMulti(self, self.multiMenu)
966 1015
1016 self.__multiMenuFormattingAct.setEnabled(
1017 not FileSystemUtilities.isRemoteFileName(self.project.getProjectPath())
1018 )
1019
967 self.showMenu.emit("MainMulti", self.multiMenu) 1020 self.showMenu.emit("MainMulti", self.multiMenu)
968 1021
969 def __showContextMenuDir(self): 1022 def __showContextMenuDir(self):
970 """ 1023 """
971 Private slot called by the dirMenu aboutToShow signal. 1024 Private slot called by the dirMenu aboutToShow signal.
972 """ 1025 """
973 ProjectBaseBrowser._showContextMenuDir(self, self.dirMenu) 1026 ProjectBaseBrowser._showContextMenuDir(self, self.dirMenu)
974 1027
1028 self.__dirMenuFormattingAct.setEnabled(
1029 not FileSystemUtilities.isRemoteFileName(self.project.getProjectPath())
1030 )
1031 self.__dirMenuFileManagerAct.setEnabled(
1032 not FileSystemUtilities.isRemoteFileName(self.project.getProjectPath())
1033 )
1034
975 self.showMenu.emit("MainDir", self.dirMenu) 1035 self.showMenu.emit("MainDir", self.dirMenu)
976 1036
977 def __showContextMenuDirMulti(self): 1037 def __showContextMenuDirMulti(self):
978 """ 1038 """
979 Private slot called by the dirMultiMenu aboutToShow signal. 1039 Private slot called by the dirMultiMenu aboutToShow signal.
985 def __showContextMenuBack(self): 1045 def __showContextMenuBack(self):
986 """ 1046 """
987 Private slot called by the backMenu aboutToShow signal. 1047 Private slot called by the backMenu aboutToShow signal.
988 """ 1048 """
989 ProjectBaseBrowser._showContextMenuBack(self, self.backMenu) 1049 ProjectBaseBrowser._showContextMenuBack(self, self.backMenu)
1050
1051 self.__backMenuFileManagerAct.setEnabled(
1052 not FileSystemUtilities.isRemoteFileName(self.project.getProjectPath())
1053 )
990 1054
991 self.showMenu.emit("MainBack", self.backMenu) 1055 self.showMenu.emit("MainBack", self.backMenu)
992 1056
993 def __showContextMenuShow(self): 1057 def __showContextMenuShow(self):
994 """ 1058 """
1063 """ 1127 """
1064 Private method to add a new package to the project. 1128 Private method to add a new package to the project.
1065 """ 1129 """
1066 from .NewPythonPackageDialog import NewPythonPackageDialog 1130 from .NewPythonPackageDialog import NewPythonPackageDialog
1067 1131
1132 isRemote = FileSystemUtilities.isRemoteFileName(self.project.getProjectPath())
1133 remotefsInterface = (
1134 ericApp().getObject("EricServer").getServiceInterface("FileSystem")
1135 )
1136 separator = remotefsInterface.separator() if isRemote else os.sep
1137
1068 dn = self.currentDirectory(relative=True) 1138 dn = self.currentDirectory(relative=True)
1069 if dn.startswith(os.sep): 1139 if dn.startswith(separator):
1070 dn = dn[1:] 1140 dn = dn[1:]
1071 dlg = NewPythonPackageDialog(dn, self) 1141 dlg = NewPythonPackageDialog(dn, self)
1072 if dlg.exec() == QDialog.DialogCode.Accepted: 1142 if dlg.exec() == QDialog.DialogCode.Accepted:
1073 packageName = dlg.getData() 1143 packageName = dlg.getData()
1074 nameParts = packageName.split(".") 1144 nameParts = packageName.split(".")
1075 packagePath = self.project.ppath 1145 packagePath = self.project.ppath
1076 packageFile = "" 1146 packageFile = ""
1077 for name in nameParts: 1147 for name in nameParts:
1078 packagePath = os.path.join(packagePath, name) 1148 packagePath = (
1079 if not os.path.exists(packagePath): 1149 remotefsInterface.join(packagePath, name)
1150 if isRemote
1151 else os.path.join(packagePath, name)
1152 )
1153 exists = (
1154 remotefsInterface.exists(packagePath)
1155 if isRemote
1156 else os.path.exists(packagePath)
1157 )
1158 if not exists:
1080 try: 1159 try:
1081 os.mkdir(packagePath) 1160 if isRemote:
1161 remotefsInterface.mkdir(packagePath)
1162 else:
1163 os.mkdir(packagePath)
1082 except OSError as err: 1164 except OSError as err:
1083 EricMessageBox.critical( 1165 EricMessageBox.critical(
1084 self, 1166 self,
1085 self.tr("Add new Python package"), 1167 self.tr("Add new Python package"),
1086 self.tr( 1168 self.tr(
1088 """ not be created. Aborting...</p>""" 1170 """ not be created. Aborting...</p>"""
1089 """<p>Reason: {1}</p>""" 1171 """<p>Reason: {1}</p>"""
1090 ).format(packagePath, str(err)), 1172 ).format(packagePath, str(err)),
1091 ) 1173 )
1092 return 1174 return
1093 packageFile = os.path.join(packagePath, "__init__.py") 1175 packageFile = (
1094 if not os.path.exists(packageFile): 1176 remotefsInterface.join(packagePath, "__init__.py")
1177 if isRemote
1178 else os.path.join(packagePath, "__init__.py")
1179 )
1180 exists = (
1181 remotefsInterface.exists(packageFile)
1182 if isRemote
1183 else os.path.exists(packageFile)
1184 )
1185 if not exists:
1095 try: 1186 try:
1096 with open(packageFile, "w", encoding="utf-8"): 1187 if isRemote:
1097 pass 1188 remotefsInterface.writeFile(packageFile, b"")
1189 else:
1190 with open(packageFile, "w", encoding="utf-8"):
1191 pass
1098 except OSError as err: 1192 except OSError as err:
1099 EricMessageBox.critical( 1193 EricMessageBox.critical(
1100 self, 1194 self,
1101 self.tr("Add new Python package"), 1195 self.tr("Add new Python package"),
1102 self.tr( 1196 self.tr(
1112 1206
1113 def __addNewSourceFile(self): 1207 def __addNewSourceFile(self):
1114 """ 1208 """
1115 Private method to add a new source file to the project. 1209 Private method to add a new source file to the project.
1116 """ 1210 """
1211 isRemote = FileSystemUtilities.isRemoteFileName(self.project.getProjectPath())
1212 remotefsInterface = (
1213 ericApp().getObject("EricServer").getServiceInterface("FileSystem")
1214 )
1215
1117 dn = self.currentDirectory() 1216 dn = self.currentDirectory()
1118 filename, ok = EricPathPickerDialog.getStrPath( 1217 filename, ok = EricPathPickerDialog.getStrPath(
1119 self, 1218 self,
1120 self.tr("New source file"), 1219 self.tr("New source file"),
1121 self.tr("Enter the path of the new source file:"), 1220 self.tr("Enter the path of the new source file:"),
1123 strPath=dn, 1222 strPath=dn,
1124 defaultDirectory=dn, 1223 defaultDirectory=dn,
1125 filters=self.project.getFileCategoryFilters( 1224 filters=self.project.getFileCategoryFilters(
1126 categories=["SOURCES"], withAll=False 1225 categories=["SOURCES"], withAll=False
1127 ), 1226 ),
1227 remote=isRemote,
1128 ) 1228 )
1129 if ok: 1229 if ok:
1130 if os.path.exists(filename): 1230 exists = (
1231 remotefsInterface.exists(filename)
1232 if isRemote
1233 else os.path.exists(filename)
1234 )
1235 if exists:
1131 EricMessageBox.critical( 1236 EricMessageBox.critical(
1132 self, 1237 self,
1133 self.tr("New source file"), 1238 self.tr("New source file"),
1134 self.tr( 1239 self.tr(
1135 "<p>The file <b>{0}</b> already exists. The action will be" 1240 "<p>The file <b>{0}</b> already exists. The action will be"
1140 1245
1141 try: 1246 try:
1142 newline = ( 1247 newline = (
1143 None if self.project.useSystemEol() else self.project.getEolString() 1248 None if self.project.useSystemEol() else self.project.getEolString()
1144 ) 1249 )
1145 with open(filename, "w", newline=newline) as f: 1250 header = "# -*- coding: utf-8 -*-\n# {0}\n".format(
1146 f.write("# -*- coding: utf-8 -*-\n") 1251 self.project.getRelativePath(filename)
1147 f.write("# {0}\n".format(self.project.getRelativePath(filename))) 1252 )
1253 if isRemote:
1254 remotefsInterface.writeFile(
1255 filename, header.encode("utf-8"), newline=newline
1256 )
1257 else:
1258 with open(filename, "w", newline=newline) as f:
1259 f.write(header)
1148 except OSError as err: 1260 except OSError as err:
1149 EricMessageBox.critical( 1261 EricMessageBox.critical(
1150 self, 1262 self,
1151 self.tr("New source file"), 1263 self.tr("New source file"),
1152 self.tr( 1264 self.tr(
1343 1455
1344 def __showImportsDiagram(self): 1456 def __showImportsDiagram(self):
1345 """ 1457 """
1346 Private method to handle the imports diagram context menu action. 1458 Private method to handle the imports diagram context menu action.
1347 """ 1459 """
1460 isRemote = FileSystemUtilities.isRemoteFileName(self.project.getProjectPath())
1461 remotefsInterface = (
1462 ericApp().getObject("EricServer").getServiceInterface("FileSystem")
1463 )
1464
1348 itm = self.model().item(self.currentIndex()) 1465 itm = self.model().item(self.currentIndex())
1349 try: 1466 try:
1350 fn = itm.fileName() 1467 fn = itm.fileName()
1351 except AttributeError: 1468 except AttributeError:
1352 fn = itm.dirName() 1469 fn = itm.dirName()
1353 package = fn if os.path.isdir(fn) else os.path.dirname(fn) 1470 package = (
1471 fn
1472 if remotefsInterface.isdir(fn)
1473 else (
1474 remotefsInterface.dirname(fn)
1475 if isRemote
1476 else fn if os.path.isdir(fn) else os.path.dirname(fn)
1477 )
1478 )
1354 res = EricMessageBox.yesNo( 1479 res = EricMessageBox.yesNo(
1355 self, 1480 self,
1356 self.tr("Imports Diagram"), 1481 self.tr("Imports Diagram"),
1357 self.tr("""Include imports from external modules?"""), 1482 self.tr("""Include imports from external modules?"""),
1358 ) 1483 )
1368 1493
1369 def __showPackageDiagram(self): 1494 def __showPackageDiagram(self):
1370 """ 1495 """
1371 Private method to handle the package diagram context menu action. 1496 Private method to handle the package diagram context menu action.
1372 """ 1497 """
1498 isRemote = FileSystemUtilities.isRemoteFileName(self.project.getProjectPath())
1499 remotefsInterface = (
1500 ericApp().getObject("EricServer").getServiceInterface("FileSystem")
1501 )
1502
1373 itm = self.model().item(self.currentIndex()) 1503 itm = self.model().item(self.currentIndex())
1374 try: 1504 try:
1375 fn = itm.fileName() 1505 fn = itm.fileName()
1376 except AttributeError: 1506 except AttributeError:
1377 fn = itm.dirName() 1507 fn = itm.dirName()
1378 package = fn if os.path.isdir(fn) else os.path.dirname(fn) 1508 package = (
1509 fn
1510 if remotefsInterface.isdir(fn)
1511 else (
1512 remotefsInterface.dirname(fn)
1513 if isRemote
1514 else fn if os.path.isdir(fn) else os.path.dirname(fn)
1515 )
1516 )
1379 res = EricMessageBox.yesNo( 1517 res = EricMessageBox.yesNo(
1380 self, 1518 self,
1381 self.tr("Package Diagram"), 1519 self.tr("Package Diagram"),
1382 self.tr("""Include class attributes?"""), 1520 self.tr("""Include class attributes?"""),
1383 yesDefault=True, 1521 yesDefault=True,

eric ide

mercurial