src/eric7/MicroPython/MicroPythonFileManagerWidget.py

branch
eric7
changeset 10911
9cccac01156f
parent 10898
8349907e1319
child 10914
f8506ac41ba7
equal deleted inserted replaced
10910:13c8626c5024 10911:9cccac01156f
121 ) 121 )
122 self.deviceFileTreeWidget.customContextMenuRequested.connect( 122 self.deviceFileTreeWidget.customContextMenuRequested.connect(
123 self.__showDeviceContextMenu 123 self.__showDeviceContextMenu
124 ) 124 )
125 125
126 ########################################################################
127 ## Context menu for the local directory tree.
128 ########################################################################
129
126 self.__localMenu = QMenu(self) 130 self.__localMenu = QMenu(self)
127 self.__localMenu.addAction( 131 self.__localMenu.addAction(
128 self.tr("Change Directory"), self.__changeLocalDirectory 132 self.tr("Change Directory"), self.__changeLocalDirectory
129 ) 133 )
130 self.__localMenu.addAction( 134 self.__localMenu.addAction(
132 ) 136 )
133 self.__localDelDirTreeAct = self.__localMenu.addAction( 137 self.__localDelDirTreeAct = self.__localMenu.addAction(
134 self.tr("Delete Directory Tree"), self.__deleteLocalDirectoryTree 138 self.tr("Delete Directory Tree"), self.__deleteLocalDirectoryTree
135 ) 139 )
136 self.__localMenu.addSeparator() 140 self.__localMenu.addSeparator()
141 self.__localMenu.addAction(
142 self.tr("New File"), self.__newLocalFile
143 )
144 self.__openLocalFileAct = self.__localMenu.addAction(
145 self.tr("Open File"), self.__openLocalFile
146 )
137 self.__localRenameFileAct = self.__localMenu.addAction( 147 self.__localRenameFileAct = self.__localMenu.addAction(
138 self.tr("Rename File"), self.__renameLocalFile 148 self.tr("Rename File"), self.__renameLocalFile
139 ) 149 )
140 self.__localMenu.addSeparator()
141 self.__localDelFileAct = self.__localMenu.addAction( 150 self.__localDelFileAct = self.__localMenu.addAction(
142 self.tr("Delete File"), self.__deleteLocalFile 151 self.tr("Delete File"), self.__deleteLocalFile
143 ) 152 )
144 self.__localMenu.addSeparator() 153 self.__localMenu.addSeparator()
145 act = self.__localMenu.addAction(self.tr("Show Hidden Files")) 154 act = self.__localMenu.addAction(self.tr("Show Hidden Files"))
149 self.__localMenu.addSeparator() 158 self.__localMenu.addSeparator()
150 self.__localClearSelectionAct = self.__localMenu.addAction( 159 self.__localClearSelectionAct = self.__localMenu.addAction(
151 self.tr("Clear Selection"), self.__clearLocalSelection 160 self.tr("Clear Selection"), self.__clearLocalSelection
152 ) 161 )
153 162
163 ########################################################################
164 ## Context menu for the device directory tree.
165 ########################################################################
166
154 self.__deviceMenu = QMenu(self) 167 self.__deviceMenu = QMenu(self)
155 if not isMicrobitDeviceWithMPy: 168 if not isMicrobitDeviceWithMPy:
156 self.__deviceMenu.addAction( 169 self.__deviceMenu.addAction(
157 self.tr("Change Directory"), self.__changeDeviceDirectory 170 self.tr("Change Directory"), self.__changeDeviceDirectory
158 ) 171 )
164 ) 177 )
165 self.__devDelDirTreeAct = self.__deviceMenu.addAction( 178 self.__devDelDirTreeAct = self.__deviceMenu.addAction(
166 self.tr("Delete Directory Tree"), self.__deleteDeviceDirectoryTree 179 self.tr("Delete Directory Tree"), self.__deleteDeviceDirectoryTree
167 ) 180 )
168 self.__deviceMenu.addSeparator() 181 self.__deviceMenu.addSeparator()
182 self.__deviceMenu.addAction(
183 self.tr("New File"), self.__newDeviceFile
184 )
185 self.__openDeviceFileAct = self.__deviceMenu.addAction(
186 self.tr("Open File"), self.__openDeviceFile
187 )
169 self.__devRenameFileAct = self.__deviceMenu.addAction( 188 self.__devRenameFileAct = self.__deviceMenu.addAction(
170 self.tr("Rename File"), self.__renameDeviceFile 189 self.tr("Rename File"), self.__renameDeviceFile
171 ) 190 )
172 self.__deviceMenu.addSeparator()
173 self.__devDelFileAct = self.__deviceMenu.addAction( 191 self.__devDelFileAct = self.__deviceMenu.addAction(
174 self.tr("Delete File"), self.__deleteDeviceFile 192 self.tr("Delete File"), self.__deleteDeviceFile
175 ) 193 )
176 self.__deviceMenu.addSeparator() 194 self.__deviceMenu.addSeparator()
177 act = self.__deviceMenu.addAction(self.tr("Show Hidden Files")) 195 act = self.__deviceMenu.addAction(self.tr("Show Hidden Files"))
1097 isDir = False 1115 isDir = False
1098 isFile = False 1116 isFile = False
1099 self.__localDelDirTreeAct.setEnabled(isDir) 1117 self.__localDelDirTreeAct.setEnabled(isDir)
1100 self.__localRenameFileAct.setEnabled(isFile) 1118 self.__localRenameFileAct.setEnabled(isFile)
1101 self.__localDelFileAct.setEnabled(isFile) 1119 self.__localDelFileAct.setEnabled(isFile)
1120 self.__openLocalFileAct.setEnabled(isFile)
1102 1121
1103 self.__localMenu.exec(self.localFileTreeWidget.mapToGlobal(pos)) 1122 self.__localMenu.exec(self.localFileTreeWidget.mapToGlobal(pos))
1104 1123
1105 @pyqtSlot() 1124 @pyqtSlot()
1106 def __changeLocalDirectory(self, localDevice=False): 1125 def __changeLocalDirectory(self, localDevice=False):
1362 if not self.__repl.isMicrobit(): 1381 if not self.__repl.isMicrobit():
1363 self.__devDelDirAct.setEnabled(isDir) 1382 self.__devDelDirAct.setEnabled(isDir)
1364 self.__devDelDirTreeAct.setEnabled(isDir) 1383 self.__devDelDirTreeAct.setEnabled(isDir)
1365 self.__devRenameFileAct.setEnabled(isFile) 1384 self.__devRenameFileAct.setEnabled(isFile)
1366 self.__devDelFileAct.setEnabled(isFile) 1385 self.__devDelFileAct.setEnabled(isFile)
1386 self.__openDeviceFileAct.setEnabled(isFile)
1367 1387
1368 self.__deviceMenu.exec(self.deviceFileTreeWidget.mapToGlobal(pos)) 1388 self.__deviceMenu.exec(self.deviceFileTreeWidget.mapToGlobal(pos))
1369 1389
1370 @pyqtSlot() 1390 @pyqtSlot()
1371 def __changeDeviceDirectory(self): 1391 def __changeDeviceDirectory(self):
1570 """ 1590 """
1571 Private slot to clear the local selection. 1591 Private slot to clear the local selection.
1572 """ 1592 """
1573 for item in self.deviceFileTreeWidget.selectedItems()[:]: 1593 for item in self.deviceFileTreeWidget.selectedItems()[:]:
1574 item.setSelected(False) 1594 item.setSelected(False)
1595
1596 ############################################################################
1597 ## Methods for the MicroPython window variant.
1598 ############################################################################
1599
1600 @pyqtSlot()
1601 def __newLocalFile(self, localDevice=False):
1602 """
1603 Private slot to create a new local file.
1604
1605 @param localDevice flag indicating device access via local file system
1606 @type bool
1607 """
1608 cwdWidget = self.deviceCwd if localDevice else self.localCwd
1609 fileTreeWidget = (
1610 self.deviceFileTreeWidget if localDevice else self.localFileTreeWidget
1611 )
1612
1613 if fileTreeWidget.selectedItems():
1614 localItem = fileTreeWidget.selectedItems()[0]
1615 defaultPath = localItem.data(0, Qt.ItemDataRole.UserRole)
1616 if not os.path.isdir(defaultPath):
1617 defaultPath = os.path.dirname(defaultPath)
1618 localItem = localItem.parent()
1619 else:
1620 defaultPath = cwdWidget.text()
1621 localItem = None
1622
1623 filePath, ok = QInputDialog.getText(
1624 self,
1625 self.tr("New File"),
1626 self.tr("Enter file name:"),
1627 QLineEdit.EchoMode.Normal,
1628 )
1629 if ok and filePath:
1630 filePath = os.path.join(defaultPath, filePath)
1631 try:
1632 with open(filePath, "w") as f:
1633 f.close()
1634 if localItem:
1635 self.__listLocalFiles(localDevice=localDevice, parentItem=localItem)
1636 else:
1637 self.__listLocalFiles(
1638 dirname=cwdWidget.text(), localDevice=localDevice
1639 )
1640 except OSError as exc:
1641 EricMessageBox.critical(
1642 self,
1643 self.tr("New File"),
1644 self.tr(
1645 """<p>The file <b>{0}</b> could not be"""
1646 """ created.</p><p>Reason: {1}</p>"""
1647 ).format(filePath, str(exc)),
1648 )
1649
1650 @pyqtSlot()
1651 def __openLocalFile(self):
1652 """
1653 Private slot to open the selected local file in an editor window.
1654 """
1655 self.on_localFileTreeWidget_itemActivated(
1656 self.localFileTreeWidget.selectedItems()[0], 0
1657 )
1658
1659 @pyqtSlot()
1660 def __newDeviceFile(self):
1661 """
1662 Private slot to create a new file on the connected device.
1663 """
1664 # TODO: not implemented yet
1665 if self.__repl.deviceSupportsLocalFileAccess():
1666 self.__newLocalFile(True)
1667 else:
1668 selectedItems = self.deviceFileTreeWidget.selectedItems()
1669 if selectedItems:
1670 item = selectedItems[0]
1671 defaultPath = (
1672 item.data(0, Qt.ItemDataRole.UserRole)
1673 if item.text(0).endswith("/")
1674 else os.path.dirname(item.data(0, Qt.ItemDataRole.UserRole))
1675 )
1676 else:
1677 defaultPath = self.deviceCwd.text()
1678 fileName, ok = QInputDialog.getText(
1679 self,
1680 self.tr("New File"),
1681 self.tr("Enter file name:"),
1682 QLineEdit.EchoMode.Normal,
1683 defaultPath,
1684 )
1685 if ok and fileName:
1686 self.__fileManager.writeFile(fileName, "")
1687
1688 @pyqtSlot()
1689 def __openDeviceFile(self):
1690 """
1691 Private slot to open the selected device file in an editor window.
1692 """
1693 self.on_deviceFileTreeWidget_itemActivated(
1694 self.deviceFileTreeWidget.selectedItems()[0], 0
1695 )

eric ide

mercurial