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