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, |