src/eric7/Project/ProjectSourcesBrowser.py

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

eric ide

mercurial