src/eric7/MicroPython/MicroPythonFileManagerWidget.py

branch
eric7
changeset 10515
6e790462348a
parent 10512
b7292f2691f9
child 10518
1682f3203ae5
equal deleted inserted replaced
10514:5e6362665247 10515:6e790462348a
129 ) 129 )
130 self.__localDelDirTreeAct = self.__localMenu.addAction( 130 self.__localDelDirTreeAct = self.__localMenu.addAction(
131 self.tr("Delete Directory Tree"), self.__deleteLocalDirectoryTree 131 self.tr("Delete Directory Tree"), self.__deleteLocalDirectoryTree
132 ) 132 )
133 self.__localMenu.addSeparator() 133 self.__localMenu.addSeparator()
134 self.__localRenameFileAct = self.__localMenu.addAction(
135 self.tr("Rename File"), self.__renameLocalFile
136 )
137 self.__localMenu.addSeparator()
134 self.__localDelFileAct = self.__localMenu.addAction( 138 self.__localDelFileAct = self.__localMenu.addAction(
135 self.tr("Delete File"), self.__deleteLocalFile 139 self.tr("Delete File"), self.__deleteLocalFile
136 ) 140 )
137 self.__localMenu.addSeparator() 141 self.__localMenu.addSeparator()
138 act = self.__localMenu.addAction(self.tr("Show Hidden Files")) 142 act = self.__localMenu.addAction(self.tr("Show Hidden Files"))
153 ) 157 )
154 self.__devDelDirTreeAct = self.__deviceMenu.addAction( 158 self.__devDelDirTreeAct = self.__deviceMenu.addAction(
155 self.tr("Delete Directory Tree"), self.__deleteDeviceDirectoryTree 159 self.tr("Delete Directory Tree"), self.__deleteDeviceDirectoryTree
156 ) 160 )
157 self.__deviceMenu.addSeparator() 161 self.__deviceMenu.addSeparator()
162 self.__devRenameFileAct = self.__deviceMenu.addAction(
163 self.tr("Rename File"), self.__renameDeviceFile
164 )
165 self.__deviceMenu.addSeparator()
158 self.__devDelFileAct = self.__deviceMenu.addAction( 166 self.__devDelFileAct = self.__deviceMenu.addAction(
159 self.tr("Delete File"), self.__deleteDeviceFile 167 self.tr("Delete File"), self.__deleteDeviceFile
160 ) 168 )
161 self.__deviceMenu.addSeparator() 169 self.__deviceMenu.addSeparator()
162 act = self.__deviceMenu.addAction(self.tr("Show Hidden Files")) 170 act = self.__deviceMenu.addAction(self.tr("Show Hidden Files"))
840 isFile = not isDir 848 isFile = not isDir
841 else: 849 else:
842 isDir = False 850 isDir = False
843 isFile = False 851 isFile = False
844 self.__localDelDirTreeAct.setEnabled(isDir) 852 self.__localDelDirTreeAct.setEnabled(isDir)
853 self.__localRenameFileAct.setEnabled(isFile)
845 self.__localDelFileAct.setEnabled(isFile) 854 self.__localDelFileAct.setEnabled(isFile)
846 855
847 self.__localMenu.exec(self.localFileTreeWidget.mapToGlobal(pos)) 856 self.__localMenu.exec(self.localFileTreeWidget.mapToGlobal(pos))
848 857
849 @pyqtSlot() 858 @pyqtSlot()
975 """<p>The file <b>{0}</b> could not be""" 984 """<p>The file <b>{0}</b> could not be"""
976 """ deleted.</p><p>Reason: {1}</p>""" 985 """ deleted.</p><p>Reason: {1}</p>"""
977 ).format(filename, str(exc)), 986 ).format(filename, str(exc)),
978 ) 987 )
979 988
989 @pyqtSlot()
990 def __renameLocalFile(self, localDevice=False):
991 """
992 Private slot to rename a file on the device.
993
994 @param localDevice flag indicating device access via local file system
995 (defaults to False)
996 @type bool (optional)
997 """
998 if localDevice:
999 cwdWidget = self.deviceCwd
1000 fileTreeWidget = self.deviceFileTreeWidget
1001 else:
1002 cwdWidget = self.localCwd
1003 fileTreeWidget = self.localFileTreeWidget
1004
1005 if bool(len(fileTreeWidget.selectedItems())):
1006 name = fileTreeWidget.selectedItems()[0].text(0)
1007 filename = os.path.join(cwdWidget.text(), name)
1008 newname, ok = QInputDialog.getText(
1009 self,
1010 self.tr("Rename File"),
1011 self.tr("Enter the new path for the file"),
1012 QLineEdit.EchoMode.Normal,
1013 filename,
1014 )
1015 if ok and newname:
1016 try:
1017 os.rename(filename, newname)
1018 except OSError as exc:
1019 EricMessageBox.critical(
1020 self,
1021 self.tr("Rename File"),
1022 self.tr(
1023 """<p>The file <b>{0}</b> could not be"""
1024 """ renamed to <b>{1}</b>.</p><p>Reason: {2}</p>"""
1025 ).format(filename, newname, str(exc)),
1026 )
1027
1028 # reload the directory listing
1029 if localDevice:
1030 self.on_deviceReloadButton_clicked()
1031 else:
1032 self.on_localReloadButton_clicked()
1033
980 @pyqtSlot(bool) 1034 @pyqtSlot(bool)
981 def __localHiddenChanged(self, checked): 1035 def __localHiddenChanged(self, checked):
982 """ 1036 """
983 Private slot handling a change of the local show hidden menu entry. 1037 Private slot handling a change of the local show hidden menu entry.
984 1038
1009 isDir = False 1063 isDir = False
1010 isFile = False 1064 isFile = False
1011 if not self.__repl.isMicrobit(): 1065 if not self.__repl.isMicrobit():
1012 self.__devDelDirAct.setEnabled(isDir) 1066 self.__devDelDirAct.setEnabled(isDir)
1013 self.__devDelDirTreeAct.setEnabled(isDir) 1067 self.__devDelDirTreeAct.setEnabled(isDir)
1068 self.__devRenameFileAct.setEnabled(isFile)
1014 self.__devDelFileAct.setEnabled(isFile) 1069 self.__devDelFileAct.setEnabled(isFile)
1015 1070
1016 self.__deviceMenu.exec(self.deviceFileTreeWidget.mapToGlobal(pos)) 1071 self.__deviceMenu.exec(self.deviceFileTreeWidget.mapToGlobal(pos))
1017 1072
1018 @pyqtSlot() 1073 @pyqtSlot()
1135 [filename], 1190 [filename],
1136 ) 1191 )
1137 if dlg.exec() == QDialog.DialogCode.Accepted: 1192 if dlg.exec() == QDialog.DialogCode.Accepted:
1138 self.__fileManager.delete(filename) 1193 self.__fileManager.delete(filename)
1139 1194
1195 @pyqtSlot()
1196 def __renameDeviceFile(self):
1197 """
1198 Private slot to rename a file on the device.
1199 """
1200 if self.__repl.deviceSupportsLocalFileAccess():
1201 self.__renameLocalFile(True)
1202 else:
1203 if bool(len(self.deviceFileTreeWidget.selectedItems())):
1204 name = self.deviceFileTreeWidget.selectedItems()[0].text(0)
1205 dirname = self.deviceCwd.text()
1206 if dirname:
1207 if dirname != "/":
1208 filename = dirname + "/" + name
1209 else:
1210 filename = "/" + name
1211 else:
1212 filename = name
1213 newname, ok = QInputDialog.getText(
1214 self,
1215 self.tr("Rename File"),
1216 self.tr("Enter the new path for the file"),
1217 QLineEdit.EchoMode.Normal,
1218 filename,
1219 )
1220 if ok and newname:
1221 success = self.__fileManager.rename(filename, newname)
1222 if success:
1223 self.on_deviceReloadButton_clicked()
1224
1140 @pyqtSlot(bool) 1225 @pyqtSlot(bool)
1141 def __deviceHiddenChanged(self, checked): 1226 def __deviceHiddenChanged(self, checked):
1142 """ 1227 """
1143 Private slot handling a change of the device show hidden menu entry. 1228 Private slot handling a change of the device show hidden menu entry.
1144 1229

eric ide

mercurial