src/eric7/RemoteServerInterface/EricServerFileDialog.py

branch
server
changeset 10597
fbe93720ee9f
parent 10590
e7fe32611a80
child 10602
a767e9c400fa
equal deleted inserted replaced
10596:ea35c92a3c7c 10597:fbe93720ee9f
93 self.__nameCompleter.activated.connect(self.__nameCompleterActivated) 93 self.__nameCompleter.activated.connect(self.__nameCompleterActivated)
94 self.nameEdit.setCompleter(self.__nameCompleter) 94 self.nameEdit.setCompleter(self.__nameCompleter)
95 95
96 self.__contextMenu = QMenu(self) 96 self.__contextMenu = QMenu(self)
97 97
98 self.__fsInterface = ericApp().getObject("EricServer").getServiceInterface( 98 self.__fsInterface = (
99 "FileSystem" 99 ericApp().getObject("EricServer").getServiceInterface("FileSystem")
100 ) 100 )
101 101
102 # set some default values 102 # set some default values
103 self.__fileMode = FileMode.ExistingFile 103 self.__fileMode = FileMode.ExistingFile
104 self.__dirsOnly = False 104 self.__dirsOnly = False
333 @param item reference to the activated item 333 @param item reference to the activated item
334 @type QTreeWidgetItem 334 @type QTreeWidgetItem
335 @param column column number (unused) 335 @param column column number (unused)
336 @type int 336 @type int
337 """ 337 """
338 if ( 338 if item.data(0, EricServerFileDialog.IsDirectoryRole):
339 item.data(0, EricServerFileDialog.IsDirectoryRole)
340 ):
341 self.setDirectory(self.__getFullPath(item.text(0))) 339 self.setDirectory(self.__getFullPath(item.text(0)))
342 else: 340 else:
343 self.accept() 341 self.accept()
344 342
345 @pyqtSlot() 343 @pyqtSlot()
363 selected.append(itm.text(0)) 361 selected.append(itm.text(0))
364 362
365 if len(selected) == 1: 363 if len(selected) == 1:
366 self.nameEdit.setText(selected[0]) 364 self.nameEdit.setText(selected[0])
367 elif len(selected) > 1: 365 elif len(selected) > 1:
368 self.nameEdit.setText( 366 self.nameEdit.setText('"{0}"'.format('" "'.join(selected)))
369 '"{0}"'.format('" "'.join(selected))
370 )
371 367
372 self.__updateOkButton() 368 self.__updateOkButton()
373 369
374 @pyqtSlot() 370 @pyqtSlot()
375 def __nameCompleterActivated(self): 371 def __nameCompleterActivated(self):
443 if self.__selectedDirectory and self.__fileMode != FileMode.Directory: 439 if self.__selectedDirectory and self.__fileMode != FileMode.Directory:
444 self.okButton.setEnabled(True) 440 self.okButton.setEnabled(True)
445 elif self.__fileMode == FileMode.AnyFile: 441 elif self.__fileMode == FileMode.AnyFile:
446 self.okButton.setEnabled(bool(self.nameEdit.text())) 442 self.okButton.setEnabled(bool(self.nameEdit.text()))
447 elif self.__fileMode == FileMode.ExistingFile: 443 elif self.__fileMode == FileMode.ExistingFile:
448 self.okButton.setEnabled( 444 self.okButton.setEnabled(self.nameEdit.text() in self.__filenameCache)
449 self.nameEdit.text() in self.__filenameCache
450 )
451 elif self.__fileMode == FileMode.ExistingFiles: 445 elif self.__fileMode == FileMode.ExistingFiles:
452 names = self.__getNames() 446 names = self.__getNames()
453 self.okButton.setEnabled( 447 self.okButton.setEnabled(all(n in self.__filenameCache for n in names))
454 all(n in self.__filenameCache for n in names)
455 )
456 elif self.__fileMode == FileMode.Directory: 448 elif self.__fileMode == FileMode.Directory:
457 self.okButton.setEnabled(True) 449 self.okButton.setEnabled(True)
458 else: 450 else:
459 self.okButton.setEnabled(False) 451 self.okButton.setEnabled(False)
460 452
515 # 2. populate the directory listing 507 # 2. populate the directory listing
516 self.listing.clear() 508 self.listing.clear()
517 for dirEntry in sorted( 509 for dirEntry in sorted(
518 dirListing, 510 dirListing,
519 key=lambda d: ( 511 key=lambda d: (
520 " " + d['name'].lower() if d["is_dir"] else d["name"].lower() 512 " " + d["name"].lower() if d["is_dir"] else d["name"].lower()
521 ), 513 ),
522 ): 514 ):
523 if dirEntry["is_dir"]: 515 if dirEntry["is_dir"]:
524 type_ = self.tr("Directory") 516 type_ = self.tr("Directory")
525 iconName = "dirClosed" 517 iconName = "dirClosed"
529 type_ = self.tr("File") 521 type_ = self.tr("File")
530 iconName = self.__iconProvider.fileIconName(dirEntry["name"]) 522 iconName = self.__iconProvider.fileIconName(dirEntry["name"])
531 sizeStr = dataString(dirEntry["size"], QLocale.system()) 523 sizeStr = dataString(dirEntry["size"], QLocale.system())
532 self.__filenameCache.append(dirEntry["name"]) 524 self.__filenameCache.append(dirEntry["name"])
533 itm = QTreeWidgetItem( 525 itm = QTreeWidgetItem(
534 self.listing, 526 self.listing, [dirEntry["name"], sizeStr, type_, dirEntry["mtime"]]
535 [dirEntry["name"], sizeStr, type_, dirEntry["mtime"]]
536 ) 527 )
537 itm.setIcon(0, EricPixmapCache.getIcon(iconName)) 528 itm.setIcon(0, EricPixmapCache.getIcon(iconName))
538 itm.setTextAlignment(1, Qt.AlignmentFlag.AlignRight) 529 itm.setTextAlignment(1, Qt.AlignmentFlag.AlignRight)
539 itm.setTextAlignment(2, Qt.AlignmentFlag.AlignHCenter) 530 itm.setTextAlignment(2, Qt.AlignmentFlag.AlignHCenter)
540 itm.setData(0, EricServerFileDialog.IsDirectoryRole, dirEntry["is_dir"]) 531 itm.setData(0, EricServerFileDialog.IsDirectoryRole, dirEntry["is_dir"])
633 else: 624 else:
634 EricMessageBox.critical( 625 EricMessageBox.critical(
635 self, 626 self,
636 title, 627 title,
637 self.tr( 628 self.tr(
638 "<p>The renaming operation failed.</p>" 629 "<p>The renaming operation failed.</p><p>Reason: {0}</p>"
639 "<p>Reason: {0}</p>"
640 ).format(error if error else self.tr("Unknown")), 630 ).format(error if error else self.tr("Unknown")),
641 ) 631 )
642 632
643 @pyqtSlot(QTreeWidgetItem) 633 @pyqtSlot(QTreeWidgetItem)
644 def __deleteItem(self, item): 634 def __deleteItem(self, item):
673 else: 663 else:
674 EricMessageBox.critical( 664 EricMessageBox.critical(
675 self, 665 self,
676 title, 666 title,
677 self.tr( 667 self.tr(
678 "<p>The deletion operation failed.</p>" 668 "<p>The deletion operation failed.</p><p>Reason: {0}</p>"
679 "<p>Reason: {0}</p>"
680 ).format(error if error else self.tr("Unknown")), 669 ).format(error if error else self.tr("Unknown")),
681 ) 670 )
682 671
683 @pyqtSlot(bool) 672 @pyqtSlot(bool)
684 def __showHiddenToggled(self, on): 673 def __showHiddenToggled(self, on):
693 self.__filterList(filters) 682 self.__filterList(filters)
694 683
695 def selectedFiles(self): 684 def selectedFiles(self):
696 """ 685 """
697 Public method to get the selected files or the current viewport path. 686 Public method to get the selected files or the current viewport path.
698 687
699 @return selected files or current viewport path 688 @return selected files or current viewport path
700 @rtype str 689 @rtype str
701 """ 690 """
702 if self.__fileMode == FileMode.Directory and not self.nameEdit.text(): 691 if self.__fileMode == FileMode.Directory and not self.nameEdit.text():
703 return [self.treeCombo.currentText()] 692 return [self.treeCombo.currentText()]
705 return [self.__getFullPath(n) for n in self.__getNames()] 694 return [self.__getFullPath(n) for n in self.__getNames()]
706 695
707 def selectedNameFilter(self): 696 def selectedNameFilter(self):
708 """ 697 """
709 Public method to get the selected name filter. 698 Public method to get the selected name filter.
710 699
711 @return selected name filter 700 @return selected name filter
712 @rtype str 701 @rtype str
713 """ 702 """
714 return self.filterCombo.currentText() 703 return self.filterCombo.currentText()
715 704
735 """ 724 """
736 self.listing.clearSelection() 725 self.listing.clearSelection()
737 for row in range(self.listing.topLevelItemCount()): 726 for row in range(self.listing.topLevelItemCount()):
738 itm = self.listing.topLevelItem(row) 727 itm = self.listing.topLevelItem(row)
739 name = itm.text(0) 728 name = itm.text(0)
740 if ( 729 if self.__dirsOnly and not itm.data(
741 self.__dirsOnly 730 0, EricServerFileDialog.IsDirectoryRole
742 and not itm.data(0, EricServerFileDialog.IsDirectoryRole)
743 ): 731 ):
744 itm.setHidden(True) 732 itm.setHidden(True)
745 elif not self.__showHidden and self.__isHidden(name): 733 elif not self.__showHidden and self.__isHidden(name):
746 # applies to files and directories 734 # applies to files and directories
747 itm.setHidden(True) 735 itm.setHidden(True)
753 741
754 # resize the columns 742 # resize the columns
755 for column in range(4): 743 for column in range(4):
756 self.listing.resizeColumnToContents(column) 744 self.listing.resizeColumnToContents(column)
757 745
746
758 ########################################################################### 747 ###########################################################################
759 ## Module functions mimicing the interface of EricFileDialog/QFileDialog 748 ## Module functions mimicing the interface of EricFileDialog/QFileDialog
760 ########################################################################### 749 ###########################################################################
761 750
762 751
763 def getOpenFileName( 752 def getOpenFileName(
764 parent=None, caption="", directory="", filterStr="", initialFilter="", 753 parent=None,
765 withRemote=True 754 caption="",
755 directory="",
756 filterStr="",
757 initialFilter="",
758 withRemote=True,
766 ): 759 ):
767 """ 760 """
768 Module function to get the name of a file for opening it. 761 Module function to get the name of a file for opening it.
769 762
770 @param parent parent widget of the dialog (defaults to None) 763 @param parent parent widget of the dialog (defaults to None)
787 parent, caption, directory, filterStr, initialFilter, withRemote 780 parent, caption, directory, filterStr, initialFilter, withRemote
788 )[0] 781 )[0]
789 782
790 783
791 def getOpenFileNameAndFilter( 784 def getOpenFileNameAndFilter(
792 parent=None, caption="", directory="", filterStr="", initialFilter="", 785 parent=None,
793 withRemote=True 786 caption="",
787 directory="",
788 filterStr="",
789 initialFilter="",
790 withRemote=True,
794 ): 791 ):
795 """ 792 """
796 Module function to get the name of a file for opening it and the selected 793 Module function to get the name of a file for opening it and the selected
797 file name filter. 794 file name filter.
798 795
830 827
831 return fileName, selectedFilter 828 return fileName, selectedFilter
832 829
833 830
834 def getOpenFileNames( 831 def getOpenFileNames(
835 parent=None, caption="", directory="", filterStr="", initialFilter="", 832 parent=None,
836 withRemote=True 833 caption="",
834 directory="",
835 filterStr="",
836 initialFilter="",
837 withRemote=True,
837 ): 838 ):
838 """ 839 """
839 Module function to get a list of names of files for opening. 840 Module function to get a list of names of files for opening.
840 841
841 @param parent parent widget of the dialog (defaults to None) 842 @param parent parent widget of the dialog (defaults to None)
858 parent, caption, directory, filterStr, initialFilter, withRemote 859 parent, caption, directory, filterStr, initialFilter, withRemote
859 )[0] 860 )[0]
860 861
861 862
862 def getOpenFileNamesAndFilter( 863 def getOpenFileNamesAndFilter(
863 parent=None, caption="", directory="", filterStr="", initialFilter="", 864 parent=None,
864 withRemote=True 865 caption="",
866 directory="",
867 filterStr="",
868 initialFilter="",
869 withRemote=True,
865 ): 870 ):
866 """ 871 """
867 Module function to get a list of names of files for opening and the 872 Module function to get a list of names of files for opening and the
868 selected file name filter. 873 selected file name filter.
869 874
903 908
904 return filesList, selectedFilter 909 return filesList, selectedFilter
905 910
906 911
907 def getSaveFileName( 912 def getSaveFileName(
908 parent=None, caption="", directory="", filterStr="", initialFilter="", 913 parent=None,
909 withRemote=True 914 caption="",
915 directory="",
916 filterStr="",
917 initialFilter="",
918 withRemote=True,
910 ): 919 ):
911 """ 920 """
912 Module function to get the name of a file for saving. 921 Module function to get the name of a file for saving.
913 922
914 @param parent parent widget of the dialog (defaults to None) 923 @param parent parent widget of the dialog (defaults to None)
931 parent, caption, directory, filterStr, initialFilter, withRemote 940 parent, caption, directory, filterStr, initialFilter, withRemote
932 )[0] 941 )[0]
933 942
934 943
935 def getSaveFileNameAndFilter( 944 def getSaveFileNameAndFilter(
936 parent=None, caption="", directory="", filterStr="", initialFilter="", 945 parent=None,
937 withRemote=True 946 caption="",
947 directory="",
948 filterStr="",
949 initialFilter="",
950 withRemote=True,
938 ): 951 ):
939 """ 952 """
940 Module function to get the name of a file for saving and the selected file name 953 Module function to get the name of a file for saving and the selected file name
941 filter. 954 filter.
942 955

eric ide

mercurial