src/eric7/MicroPython/MicroPythonFileManagerWidget.py

Sun, 09 Mar 2025 14:16:35 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sun, 09 Mar 2025 14:16:35 +0100
branch
eric7
changeset 11166
fd914f897dcf
parent 11090
f5f5f5803935
child 11186
c2d18aefef6b
permissions
-rw-r--r--

MicroPython Interface
- Changed the WiFi and Bluetooth status dialogs to non-modal windows with a 'Refresh' button.

7078
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
11090
f5f5f5803935 Updated copyright for 2025.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
3 # Copyright (c) 2019 - 2025 Detlev Offenbach <detlev@die-offenbachs.de>
7078
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing a file manager for MicroPython devices.
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
10 import contextlib
7078
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11 import os
7084
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
12 import shutil
7078
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
14 from PyQt6.QtCore import QPoint, Qt, pyqtSlot
8318
962bce857696 Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
15 from PyQt6.QtWidgets import (
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
16 QDialog,
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
17 QHeaderView,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18 QInputDialog,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19 QLineEdit,
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
20 QMenu,
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
21 QTreeWidgetItem,
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
22 QWidget,
7082
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
23 )
7078
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24
10806
2f6df822e3b9 Moved some functions to the EricUtilities package for consistency and adapted the code base accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10690
diff changeset
25 from eric7 import EricUtilities, Preferences
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
26 from eric7.EricGui import EricPixmapCache
9413
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9238
diff changeset
27 from eric7.EricWidgets import EricMessageBox, EricPathPickerDialog
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
28 from eric7.EricWidgets.EricApplication import ericApp
9413
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9238
diff changeset
29 from eric7.EricWidgets.EricFileSaveConfirmDialog import confirmOverwrite
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
30 from eric7.EricWidgets.EricPathPicker import EricPathPickerModes
10388
a34ce7f42e8b Made the code dealing with "device:" and "remote:" file names generally available in FileSystemUtilities.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10236
diff changeset
31 from eric7.SystemUtilities import FileSystemUtilities
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
32 from eric7.UI.DeleteFilesConfirmationDialog import DeleteFilesConfirmationDialog
10518
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10515
diff changeset
33 from eric7.Utilities import MimeTypes
7078
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34
7081
ed510767c096 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7080
diff changeset
35 from .MicroPythonFileSystemUtilities import (
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
36 decoratedName,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
37 listdirStat,
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
38 mode2string,
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
39 mtime2string,
7078
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 )
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
41 from .Ui_MicroPythonFileManagerWidget import Ui_MicroPythonFileManagerWidget
7078
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 class MicroPythonFileManagerWidget(QWidget, Ui_MicroPythonFileManagerWidget):
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 """
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 Class implementing a file manager for MicroPython devices.
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
48
9853
080e060a0383 Added the capability to save from an editor to a connected MicroPython device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9802
diff changeset
49 def __init__(self, fileManager, parent=None):
7078
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 """
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 Constructor
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
52
9853
080e060a0383 Added the capability to save from an editor to a connected MicroPython device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9802
diff changeset
53 @param fileManager reference to the device file manager interface
080e060a0383 Added the capability to save from an editor to a connected MicroPython device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9802
diff changeset
54 @type MicroPythonFileManager
7078
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 @param parent reference to the parent widget
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 @type QWidget
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 """
8218
7c09585bd960 Applied some more code simplifications suggested by the new Simplify checker (super(Foo, self) => super()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8143
diff changeset
58 super().__init__(parent)
7078
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 self.setupUi(self)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
60
7126
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7108
diff changeset
61 self.__repl = parent
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
62
9413
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9238
diff changeset
63 self.syncButton.setIcon(EricPixmapCache.getIcon("2rightarrow"))
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9238
diff changeset
64 self.putButton.setIcon(EricPixmapCache.getIcon("1rightarrow"))
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9238
diff changeset
65 self.putAsButton.setIcon(EricPixmapCache.getIcon("putAs"))
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9238
diff changeset
66 self.getButton.setIcon(EricPixmapCache.getIcon("1leftarrow"))
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9238
diff changeset
67 self.getAsButton.setIcon(EricPixmapCache.getIcon("getAs"))
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9238
diff changeset
68 self.localUpButton.setIcon(EricPixmapCache.getIcon("1uparrow"))
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9238
diff changeset
69 self.localHomeButton.setIcon(EricPixmapCache.getIcon("home"))
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9238
diff changeset
70 self.localReloadButton.setIcon(EricPixmapCache.getIcon("reload"))
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9238
diff changeset
71 self.deviceUpButton.setIcon(EricPixmapCache.getIcon("1uparrow"))
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9238
diff changeset
72 self.deviceHomeButton.setIcon(EricPixmapCache.getIcon("home"))
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9238
diff changeset
73 self.deviceReloadButton.setIcon(EricPixmapCache.getIcon("reload"))
9760
11245ac9c258 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
74 self.openButton.setIcon(EricPixmapCache.getIcon("open"))
11245ac9c258 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
75 self.saveButton.setIcon(EricPixmapCache.getIcon("fileSave"))
11245ac9c258 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
76 self.saveAsButton.setIcon(EricPixmapCache.getIcon("fileSaveAs"))
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
77
9766
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
78 isMicrobitDeviceWithMPy = self.__repl.isMicrobit()
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
79
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
80 self.deviceUpButton.setEnabled(not isMicrobitDeviceWithMPy)
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
81 self.deviceHomeButton.setEnabled(not isMicrobitDeviceWithMPy)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
82
7078
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 self.putButton.setEnabled(False)
7126
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7108
diff changeset
84 self.putAsButton.setEnabled(False)
7078
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 self.getButton.setEnabled(False)
7126
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7108
diff changeset
86 self.getAsButton.setEnabled(False)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
87
9760
11245ac9c258 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
88 self.openButton.setEnabled(False)
11245ac9c258 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
89 self.saveButton.setEnabled(False)
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
90 self.saveAsButton.setEnabled(False)
9760
11245ac9c258 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
91
7078
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 self.localFileTreeWidget.header().setSortIndicator(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
93 0, Qt.SortOrder.AscendingOrder
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
94 )
7078
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 self.deviceFileTreeWidget.header().setSortIndicator(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
96 0, Qt.SortOrder.AscendingOrder
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
97 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
98
7083
217862c28319 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7082
diff changeset
99 self.__progressInfoDialog = None
9853
080e060a0383 Added the capability to save from an editor to a connected MicroPython device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9802
diff changeset
100 self.__fileManager = fileManager
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
101
7078
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102 self.__fileManager.longListFiles.connect(self.__handleLongListFiles)
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 self.__fileManager.currentDir.connect(self.__handleCurrentDir)
7081
ed510767c096 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7080
diff changeset
104 self.__fileManager.currentDirChanged.connect(self.__handleCurrentDir)
7082
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
105 self.__fileManager.putFileDone.connect(self.__newDeviceList)
7081
ed510767c096 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7080
diff changeset
106 self.__fileManager.getFileDone.connect(self.__handleGetDone)
ed510767c096 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7080
diff changeset
107 self.__fileManager.rsyncDone.connect(self.__handleRsyncDone)
7083
217862c28319 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7082
diff changeset
108 self.__fileManager.rsyncProgressMessage.connect(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
109 self.__handleRsyncProgressMessage
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
110 )
7082
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
111 self.__fileManager.removeDirectoryDone.connect(self.__newDeviceList)
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
112 self.__fileManager.createDirectoryDone.connect(self.__newDeviceList)
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
113 self.__fileManager.deleteFileDone.connect(self.__newDeviceList)
7108
4f6133a01c6a Started rearranging menu structure and testing and fixing on CircuitPython.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7095
diff changeset
114 self.__fileManager.fsinfoDone.connect(self.__fsInfoResultReceived)
9760
11245ac9c258 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
115 self.__fileManager.putDataDone.connect(self.__newDeviceList)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
116
7082
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
117 self.__fileManager.error.connect(self.__handleError)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
118
7082
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
119 self.localFileTreeWidget.customContextMenuRequested.connect(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
120 self.__showLocalContextMenu
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
121 )
7082
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
122 self.deviceFileTreeWidget.customContextMenuRequested.connect(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
123 self.__showDeviceContextMenu
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
124 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
125
10911
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
126 ########################################################################
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
127 ## Context menu for the local directory tree.
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
128 ########################################################################
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
129
7082
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
130 self.__localMenu = QMenu(self)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
131 self.__localMenu.addAction(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
132 self.tr("Change Directory"), self.__changeLocalDirectory
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
133 )
7084
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
134 self.__localMenu.addAction(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
135 self.tr("Create Directory"), self.__createLocalDirectory
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
136 )
7084
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
137 self.__localDelDirTreeAct = self.__localMenu.addAction(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
138 self.tr("Delete Directory Tree"), self.__deleteLocalDirectoryTree
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
139 )
7084
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
140 self.__localMenu.addSeparator()
10914
f8506ac41ba7 Corrected some code formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10911
diff changeset
141 self.__localMenu.addAction(self.tr("New File"), self.__newLocalFile)
10911
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
142 self.__openLocalFileAct = self.__localMenu.addAction(
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
143 self.tr("Open File"), self.__openLocalFile
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
144 )
10515
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
145 self.__localRenameFileAct = self.__localMenu.addAction(
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
146 self.tr("Rename File"), self.__renameLocalFile
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
147 )
7084
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
148 self.__localDelFileAct = self.__localMenu.addAction(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
149 self.tr("Delete File"), self.__deleteLocalFile
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
150 )
7137
4ed2573947ff MicroPythonFileManagerWidget: added option to show hidden files to the local and device files list context menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7134
diff changeset
151 self.__localMenu.addSeparator()
4ed2573947ff MicroPythonFileManagerWidget: added option to show hidden files to the local and device files list context menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7134
diff changeset
152 act = self.__localMenu.addAction(self.tr("Show Hidden Files"))
4ed2573947ff MicroPythonFileManagerWidget: added option to show hidden files to the local and device files list context menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7134
diff changeset
153 act.setCheckable(True)
4ed2573947ff MicroPythonFileManagerWidget: added option to show hidden files to the local and device files list context menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7134
diff changeset
154 act.setChecked(Preferences.getMicroPython("ShowHiddenLocal"))
4ed2573947ff MicroPythonFileManagerWidget: added option to show hidden files to the local and device files list context menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7134
diff changeset
155 act.triggered[bool].connect(self.__localHiddenChanged)
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
156 self.__localMenu.addSeparator()
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
157 self.__localClearSelectionAct = self.__localMenu.addAction(
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
158 self.tr("Clear Selection"), self.__clearLocalSelection
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
159 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
160
10911
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
161 ########################################################################
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
162 ## Context menu for the device directory tree.
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
163 ########################################################################
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
164
7082
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
165 self.__deviceMenu = QMenu(self)
9766
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
166 if not isMicrobitDeviceWithMPy:
7126
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7108
diff changeset
167 self.__deviceMenu.addAction(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
168 self.tr("Change Directory"), self.__changeDeviceDirectory
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
169 )
7126
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7108
diff changeset
170 self.__deviceMenu.addAction(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
171 self.tr("Create Directory"), self.__createDeviceDirectory
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
172 )
9767
2eed840795c0 Fixed a few issues in the MicroPython file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
173 self.__devDelDirAct = self.__deviceMenu.addAction(
2eed840795c0 Fixed a few issues in the MicroPython file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
174 self.tr("Delete Directory"), self.__deleteDeviceDirectory
2eed840795c0 Fixed a few issues in the MicroPython file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
175 )
7126
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7108
diff changeset
176 self.__devDelDirTreeAct = self.__deviceMenu.addAction(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
177 self.tr("Delete Directory Tree"), self.__deleteDeviceDirectoryTree
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
178 )
7126
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7108
diff changeset
179 self.__deviceMenu.addSeparator()
10914
f8506ac41ba7 Corrected some code formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10911
diff changeset
180 self.__deviceMenu.addAction(self.tr("New File"), self.__newDeviceFile)
10911
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
181 self.__openDeviceFileAct = self.__deviceMenu.addAction(
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
182 self.tr("Open File"), self.__openDeviceFile
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
183 )
10515
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
184 self.__devRenameFileAct = self.__deviceMenu.addAction(
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
185 self.tr("Rename File"), self.__renameDeviceFile
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
186 )
7082
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
187 self.__devDelFileAct = self.__deviceMenu.addAction(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
188 self.tr("Delete File"), self.__deleteDeviceFile
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
189 )
7137
4ed2573947ff MicroPythonFileManagerWidget: added option to show hidden files to the local and device files list context menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7134
diff changeset
190 self.__deviceMenu.addSeparator()
4ed2573947ff MicroPythonFileManagerWidget: added option to show hidden files to the local and device files list context menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7134
diff changeset
191 act = self.__deviceMenu.addAction(self.tr("Show Hidden Files"))
4ed2573947ff MicroPythonFileManagerWidget: added option to show hidden files to the local and device files list context menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7134
diff changeset
192 act.setCheckable(True)
4ed2573947ff MicroPythonFileManagerWidget: added option to show hidden files to the local and device files list context menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7134
diff changeset
193 act.setChecked(Preferences.getMicroPython("ShowHiddenDevice"))
4ed2573947ff MicroPythonFileManagerWidget: added option to show hidden files to the local and device files list context menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7134
diff changeset
194 act.triggered[bool].connect(self.__deviceHiddenChanged)
9766
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
195 if not isMicrobitDeviceWithMPy:
7126
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7108
diff changeset
196 self.__deviceMenu.addSeparator()
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7108
diff changeset
197 self.__deviceMenu.addAction(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
198 self.tr("Show Filesystem Info"), self.__showFileSystemInfo
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
199 )
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
200 self.__deviceMenu.addSeparator()
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
201 self.__deviceClearSelectionAct = self.__deviceMenu.addAction(
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
202 self.tr("Clear Selection"), self.__clearDeviceSelection
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
203 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
204
7078
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
205 def start(self):
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
206 """
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
207 Public method to start the widget.
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
208 """
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
209 self.__viewmanager = ericApp().getObject("ViewManager")
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
210 self.__viewmanager.editorCountChanged.connect(self.__updateSaveButtonStates)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
211
7095
8e10acb1cd85 Refactored and improved the MicroPython code to be able to show the file manager and the REPL simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7089
diff changeset
212 dirname = ""
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
213 aw = self.__viewmanager.activeWindow()
10388
a34ce7f42e8b Made the code dealing with "device:" and "remote:" file names generally available in FileSystemUtilities.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10236
diff changeset
214 if aw and FileSystemUtilities.isPlainFileName(aw.getFileName()):
7078
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
215 dirname = os.path.dirname(aw.getFileName())
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
216 if not dirname:
8067
a467ab075be0 MicroPython: added buttons to go to the 'home' directory (local and on device) to the MicroPython file manager and improved the workspace handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8058
diff changeset
217 dirname = (
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
218 Preferences.getMicroPython("MpyWorkspace")
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
219 or Preferences.getMultiProject("Workspace")
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
220 or os.path.expanduser("~")
8067
a467ab075be0 MicroPython: added buttons to go to the 'home' directory (local and on device) to the MicroPython file manager and improved the workspace handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8058
diff changeset
221 )
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
222 self.__listLocalFiles(dirname=dirname)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
223
9767
2eed840795c0 Fixed a few issues in the MicroPython file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
224 if self.__repl.deviceSupportsLocalFileAccess():
7130
6014d37d9683 Started to prepare the MicroPython file manager to access the device file system via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7126
diff changeset
225 dirname = self.__repl.getDeviceWorkspace()
6014d37d9683 Started to prepare the MicroPython file manager to access the device file system via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7126
diff changeset
226 if dirname:
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
227 self.__listLocalFiles(dirname=dirname, localDevice=True)
8067
a467ab075be0 MicroPython: added buttons to go to the 'home' directory (local and on device) to the MicroPython file manager and improved the workspace handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8058
diff changeset
228 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
229
8067
a467ab075be0 MicroPython: added buttons to go to the 'home' directory (local and on device) to the MicroPython file manager and improved the workspace handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8058
diff changeset
230 # list files via device script
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
231 self.__expandedDeviceEntries = []
8067
a467ab075be0 MicroPython: added buttons to go to the 'home' directory (local and on device) to the MicroPython file manager and improved the workspace handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8058
diff changeset
232 self.__fileManager.pwd()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
233
7078
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
234 def stop(self):
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
235 """
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
236 Public method to stop the widget.
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
237 """
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
238 self.__viewmanager.editorCountChanged.disconnect(self.__updateSaveButtonStates)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
239
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
240 @pyqtSlot()
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
241 def __updateSaveButtonStates(self):
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
242 """
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
243 Private slot to update the enabled state of the save buttons.
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
244 """
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
245 enable = bool(len(self.deviceFileTreeWidget.selectedItems()))
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
246 if enable:
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
247 enable &= not (
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
248 self.deviceFileTreeWidget.selectedItems()[0].text(0).endswith("/")
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
249 )
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
250 editorsCount = self.__viewmanager.getOpenEditorsCount()
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
251
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
252 self.saveButton.setEnabled(enable and bool(editorsCount))
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
253 self.saveAsButton.setEnabled(bool(editorsCount))
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
254
7082
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
255 @pyqtSlot(str, str)
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
256 def __handleError(self, method, error):
7078
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
257 """
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
258 Private slot to handle errors.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
259
7082
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
260 @param method name of the method the error occured in
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
261 @type str
7078
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
262 @param error error message
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
263 @type str
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
264 """
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8327
diff changeset
265 EricMessageBox.warning(
7078
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
266 self,
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
267 self.tr("Error handling device"),
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
268 self.tr(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
269 "<p>There was an error communicating with the connected"
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
270 " device.</p><p>Method: {0}</p><p>Message: {1}</p>"
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
271 ).format(method, error),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
272 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
273
7078
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
274 @pyqtSlot(str)
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
275 def __handleCurrentDir(self, dirname):
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
276 """
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
277 Private slot to handle a change of the current directory of the device.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
278
7078
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
279 @param dirname name of the current directory
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
280 @type str
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
281 """
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
282 self.deviceCwd.setText(dirname)
7137
4ed2573947ff MicroPythonFileManagerWidget: added option to show hidden files to the local and device files list context menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7134
diff changeset
283 self.__newDeviceList()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
284
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
285 def __findDirectoryItem(self, dirPath, fileTreeWidget):
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
286 """
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
287 Private method to find a file tree item for the given path.
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
288
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
289 @param dirPath path to be searched for
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
290 @type str
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
291 @param fileTreeWidget reference to the file list to be searched
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
292 @type QTreeWidget
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
293 @return reference to the item for the path
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
294 @rtype QTreeWidgetItem
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
295 """
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
296 itm = fileTreeWidget.topLevelItem(0)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
297 while itm is not None:
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
298 if itm.data(0, Qt.ItemDataRole.UserRole) == dirPath:
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
299 return itm
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
300 itm = fileTreeWidget.itemBelow(itm)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
301
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
302 return None
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
303
7078
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
304 @pyqtSlot(tuple)
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
305 def __handleLongListFiles(self, filesList):
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
306 """
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
307 Private slot to receive a long directory listing.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
308
7078
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
309 @param filesList tuple containing tuples with name, mode, size and time
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
310 for each directory entry
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
311 @type tuple of (str, str, str, str)
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
312 """
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
313 if filesList:
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
314 dirPath = os.path.dirname(filesList[0][-1])
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
315 dirItem = (
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
316 self.__findDirectoryItem(dirPath, self.deviceFileTreeWidget)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
317 if dirPath != self.deviceCwd.text()
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
318 else None
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
319 )
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
320
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
321 if dirItem:
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
322 dirItem.takeChildren()
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
323 else:
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
324 self.deviceFileTreeWidget.clear()
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
325
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
326 for name, mode, size, dateTime, filePath in filesList:
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
327 itm = QTreeWidgetItem(
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
328 self.deviceFileTreeWidget if dirItem is None else dirItem,
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
329 [name, mode, size, dateTime],
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
330 )
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
331 itm.setTextAlignment(1, Qt.AlignmentFlag.AlignHCenter)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
332 itm.setTextAlignment(2, Qt.AlignmentFlag.AlignRight)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
333 itm.setData(0, Qt.ItemDataRole.UserRole, filePath)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
334 if name.endswith("/"):
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
335 itm.setChildIndicatorPolicy(
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
336 QTreeWidgetItem.ChildIndicatorPolicy.ShowIndicator
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
337 )
11166
fd914f897dcf MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
338 else:
fd914f897dcf MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
339 self.deviceFileTreeWidget.clear()
fd914f897dcf MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
340
7078
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
341 self.deviceFileTreeWidget.header().resizeSections(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
342 QHeaderView.ResizeMode.ResizeToContents
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
343 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
344
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
345 if self.__expandedDeviceEntries:
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
346 dirPath = self.__expandedDeviceEntries.pop(0)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
347 dirItem = self.__findDirectoryItem(dirPath, self.deviceFileTreeWidget)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
348 if dirItem:
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
349 dirItem.setExpanded(True)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
350
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
351 def __listLocalFiles(self, dirname="", localDevice=False, parentItem=None):
7078
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
352 """
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
353 Private method to populate the local files list.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
354
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
355 @param dirname name of the local directory to be listed (defaults to "")
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
356 @type str (optional)
7130
6014d37d9683 Started to prepare the MicroPython file manager to access the device file system via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7126
diff changeset
357 @param localDevice flag indicating device access via local file system
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
358 (defaults to False)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
359 @type bool (optional)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
360 @param parentItem reference to the parent item (defaults to None)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
361 @type QTreeWidgetItem (optional)
7130
6014d37d9683 Started to prepare the MicroPython file manager to access the device file system via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7126
diff changeset
362 """
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
363 if parentItem:
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
364 dirname = parentItem.data(0, Qt.ItemDataRole.UserRole)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
365 showHidden = (
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
366 Preferences.getMicroPython("ShowHiddenDevice")
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
367 if localDevice
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
368 else Preferences.getMicroPython("ShowHiddenLocal")
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
369 )
7130
6014d37d9683 Started to prepare the MicroPython file manager to access the device file system via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7126
diff changeset
370 else:
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
371 if not dirname:
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
372 dirname = os.getcwd()
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
373 if dirname != os.sep and dirname.endswith(os.sep):
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
374 dirname = dirname[:-1]
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
375 if localDevice:
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
376 self.deviceCwd.setText(dirname)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
377 showHidden = Preferences.getMicroPython("ShowHiddenDevice")
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
378 else:
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
379 self.localCwd.setText(dirname)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
380 showHidden = Preferences.getMicroPython("ShowHiddenLocal")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
381
7137
4ed2573947ff MicroPythonFileManagerWidget: added option to show hidden files to the local and device files list context menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7134
diff changeset
382 filesStatList = listdirStat(dirname, showHidden=showHidden)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
383 filesList = [
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
384 (
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
385 decoratedName(f, s[0], os.path.isdir(os.path.join(dirname, f))),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
386 mode2string(s[0]),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
387 str(s[6]),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
388 mtime2string(s[8]),
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
389 os.path.join(dirname, f),
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
390 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
391 for f, s in filesStatList
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
392 ]
8259
2bbec88047dd Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8234
diff changeset
393 fileTreeWidget = (
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
394 self.deviceFileTreeWidget if localDevice else self.localFileTreeWidget
8259
2bbec88047dd Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8234
diff changeset
395 )
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
396 if parentItem:
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
397 parentItem.takeChildren()
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
398 else:
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
399 fileTreeWidget.clear()
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
400 parentItem = fileTreeWidget
7078
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
401 for item in filesList:
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
402 itm = QTreeWidgetItem(parentItem, item[:4])
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8067
diff changeset
403 itm.setTextAlignment(1, Qt.AlignmentFlag.AlignHCenter)
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8067
diff changeset
404 itm.setTextAlignment(2, Qt.AlignmentFlag.AlignRight)
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
405 itm.setData(0, Qt.ItemDataRole.UserRole, item[4])
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
406 if os.path.isdir(item[4]):
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
407 itm.setChildIndicatorPolicy(
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
408 QTreeWidgetItem.ChildIndicatorPolicy.ShowIndicator
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
409 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
410 fileTreeWidget.header().resizeSections(QHeaderView.ResizeMode.ResizeToContents)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
411
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
412 def __repopulateLocalFilesList(self, dirname="", localDevice=False):
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
413 """
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
414 Private method to re-populate the local files tree.
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
415
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
416 @param dirname name of the local directory to be listed (defaults to "")
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
417 @type str (optional)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
418 @param localDevice flag indicating device access via local file system
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
419 (defaults to False)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
420 @type bool (optional)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
421 """
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
422 fileTreeWidget = (
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
423 self.deviceFileTreeWidget if localDevice else self.localFileTreeWidget
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
424 )
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
425
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
426 # Step 1: record all expanded directories
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
427 expanded = []
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
428 itm = fileTreeWidget.topLevelItem(0)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
429 while itm:
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
430 if itm.isExpanded():
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
431 expanded.append(itm.data(0, Qt.ItemDataRole.UserRole))
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
432 itm = fileTreeWidget.itemBelow(itm)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
433
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
434 # Step 2: re-populate the top level directory
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
435 self.__listLocalFiles(dirname=dirname, localDevice=localDevice)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
436
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
437 # Step 3: re-populate expanded directories
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
438 itm = fileTreeWidget.topLevelItem(0)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
439 while itm:
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
440 if itm.data(0, Qt.ItemDataRole.UserRole) in expanded:
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
441 itm.setExpanded(True)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
442 itm = fileTreeWidget.itemBelow(itm)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
443
7078
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
444 @pyqtSlot(QTreeWidgetItem, int)
10690
fab36645aa7d Changed the source code and the source code documentation to improve the indication of unused method/function arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10523
diff changeset
445 def on_localFileTreeWidget_itemActivated(self, item, _column):
7078
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
446 """
7080
9a3adf033f90 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7078
diff changeset
447 Private slot to handle the activation of a local item.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
448
7080
9a3adf033f90 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7078
diff changeset
449 If the item is a directory, the list will be re-populated for this
9a3adf033f90 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7078
diff changeset
450 directory.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
451
7080
9a3adf033f90 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7078
diff changeset
452 @param item reference to the activated item
7078
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
453 @type QTreeWidgetItem
10690
fab36645aa7d Changed the source code and the source code documentation to improve the indication of unused method/function arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10523
diff changeset
454 @param _column column of the activation (unused)
7078
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
455 @type int
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
456 """
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
457 name = item.data(0, Qt.ItemDataRole.UserRole)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
458 if item.text(0).endswith("/"):
7080
9a3adf033f90 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7078
diff changeset
459 # directory names end with a '/'
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
460 self.__listLocalFiles(dirname=name)
10518
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10515
diff changeset
461 elif MimeTypes.isTextFile(name):
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
462 self.__viewmanager.getEditor(name)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
463
7078
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
464 @pyqtSlot()
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
465 def on_localFileTreeWidget_itemSelectionChanged(self):
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
466 """
7080
9a3adf033f90 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7078
diff changeset
467 Private slot handling a change of selection in the local pane.
7078
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
468 """
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
469 enable = bool(self.localFileTreeWidget.selectedItems())
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
470 self.__localClearSelectionAct.setEnabled(enable)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
471
7080
9a3adf033f90 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7078
diff changeset
472 if enable:
9a3adf033f90 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7078
diff changeset
473 enable &= not (
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
474 self.localFileTreeWidget.selectedItems()[0].text(0).endswith("/")
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
475 )
7080
9a3adf033f90 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7078
diff changeset
476 self.putButton.setEnabled(enable)
7126
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7108
diff changeset
477 self.putAsButton.setEnabled(enable)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
478
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
479 @pyqtSlot(QTreeWidgetItem)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
480 def on_localFileTreeWidget_itemExpanded(self, item):
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
481 """
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
482 Private slot handling the expansion of a local directory item.
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
483
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
484 @param item reference to the directory item
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
485 @type QTreeWidgetItem
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
486 """
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
487 if item.childCount() == 0:
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
488 # it was not populated yet
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
489 self.__listLocalFiles(parentItem=item)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
490
9767
2eed840795c0 Fixed a few issues in the MicroPython file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
491 @pyqtSlot(str)
2eed840795c0 Fixed a few issues in the MicroPython file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
492 def on_localCwd_textChanged(self, cwd):
2eed840795c0 Fixed a few issues in the MicroPython file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
493 """
9786
f94b530722af Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9769
diff changeset
494 Private slot handling a change of the current local working directory.
9767
2eed840795c0 Fixed a few issues in the MicroPython file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
495
2eed840795c0 Fixed a few issues in the MicroPython file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
496 @param cwd current local working directory
2eed840795c0 Fixed a few issues in the MicroPython file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
497 @type str
2eed840795c0 Fixed a few issues in the MicroPython file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
498 """
2eed840795c0 Fixed a few issues in the MicroPython file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
499 self.localUpButton.setEnabled(cwd != os.sep)
2eed840795c0 Fixed a few issues in the MicroPython file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
500
7080
9a3adf033f90 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7078
diff changeset
501 @pyqtSlot()
9a3adf033f90 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7078
diff changeset
502 def on_localUpButton_clicked(self):
9a3adf033f90 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7078
diff changeset
503 """
9a3adf033f90 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7078
diff changeset
504 Private slot to go up one directory level.
9a3adf033f90 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7078
diff changeset
505 """
9a3adf033f90 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7078
diff changeset
506 cwd = self.localCwd.text()
9a3adf033f90 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7078
diff changeset
507 dirname = os.path.dirname(cwd)
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
508 self.__listLocalFiles(dirname=dirname)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
509
7084
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
510 @pyqtSlot()
8067
a467ab075be0 MicroPython: added buttons to go to the 'home' directory (local and on device) to the MicroPython file manager and improved the workspace handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8058
diff changeset
511 def on_localHomeButton_clicked(self):
a467ab075be0 MicroPython: added buttons to go to the 'home' directory (local and on device) to the MicroPython file manager and improved the workspace handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8058
diff changeset
512 """
a467ab075be0 MicroPython: added buttons to go to the 'home' directory (local and on device) to the MicroPython file manager and improved the workspace handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8058
diff changeset
513 Private slot to change directory to the configured workspace.
a467ab075be0 MicroPython: added buttons to go to the 'home' directory (local and on device) to the MicroPython file manager and improved the workspace handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8058
diff changeset
514 """
a467ab075be0 MicroPython: added buttons to go to the 'home' directory (local and on device) to the MicroPython file manager and improved the workspace handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8058
diff changeset
515 dirname = (
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
516 Preferences.getMicroPython("MpyWorkspace")
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
517 or Preferences.getMultiProject("Workspace")
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
518 or os.path.expanduser("~")
8067
a467ab075be0 MicroPython: added buttons to go to the 'home' directory (local and on device) to the MicroPython file manager and improved the workspace handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8058
diff changeset
519 )
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
520 self.__listLocalFiles(dirname=dirname)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
521
8067
a467ab075be0 MicroPython: added buttons to go to the 'home' directory (local and on device) to the MicroPython file manager and improved the workspace handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8058
diff changeset
522 @pyqtSlot()
7084
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
523 def on_localReloadButton_clicked(self):
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
524 """
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
525 Private slot to reload the local list.
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
526 """
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
527 dirname = self.localCwd.text()
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
528 self.__repopulateLocalFilesList(dirname=dirname)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
529
7078
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
530 @pyqtSlot(QTreeWidgetItem, int)
10690
fab36645aa7d Changed the source code and the source code documentation to improve the indication of unused method/function arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10523
diff changeset
531 def on_deviceFileTreeWidget_itemActivated(self, item, _column):
7078
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
532 """
7081
ed510767c096 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7080
diff changeset
533 Private slot to handle the activation of a device item.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
534
7081
ed510767c096 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7080
diff changeset
535 If the item is a directory, the current working directory is changed
ed510767c096 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7080
diff changeset
536 and the list will be re-populated for this directory.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
537
7081
ed510767c096 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7080
diff changeset
538 @param item reference to the activated item
7078
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
539 @type QTreeWidgetItem
10690
fab36645aa7d Changed the source code and the source code documentation to improve the indication of unused method/function arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10523
diff changeset
540 @param _column column of the activation (unused)
7078
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
541 @type int
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
542 """
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
543 name = item.data(0, Qt.ItemDataRole.UserRole)
9767
2eed840795c0 Fixed a few issues in the MicroPython file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
544 if self.__repl.deviceSupportsLocalFileAccess():
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
545 if item.text(0).endswith("/"):
7131
f75e990caf99 MicroPythonFileManager: finished the file access via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7130
diff changeset
546 # directory names end with a '/'
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
547 self.__listLocalFiles(dirname=name)
10143
bf84513859ca MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9959
diff changeset
548 else:
bf84513859ca MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9959
diff changeset
549 if not os.path.exists(name):
bf84513859ca MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9959
diff changeset
550 EricMessageBox.warning(
bf84513859ca MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9959
diff changeset
551 self,
bf84513859ca MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9959
diff changeset
552 self.tr("Open Device File"),
bf84513859ca MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9959
diff changeset
553 self.tr(
bf84513859ca MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9959
diff changeset
554 """<p>The file <b>{0}</b> does not exist.</p>"""
bf84513859ca MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9959
diff changeset
555 ).format(name),
bf84513859ca MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9959
diff changeset
556 )
bf84513859ca MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9959
diff changeset
557 return
10518
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10515
diff changeset
558 if MimeTypes.isTextFile(name):
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
559 self.__viewmanager.getEditor(name)
7131
f75e990caf99 MicroPythonFileManager: finished the file access via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7130
diff changeset
560 else:
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
561 if item.text(0).endswith("/"):
7131
f75e990caf99 MicroPythonFileManager: finished the file access via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7130
diff changeset
562 # directory names end with a '/'
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
563 self.__fileManager.cd(name)
9760
11245ac9c258 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
564 else:
11245ac9c258 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
565 data = self.__fileManager.getData(name)
10236
c270c9501f1c MicroPython interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10143
diff changeset
566 try:
c270c9501f1c MicroPython interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10143
diff changeset
567 text = data.decode(encoding="utf-8")
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
568 self.__viewmanager.newEditorWithText(
10388
a34ce7f42e8b Made the code dealing with "device:" and "remote:" file names generally available in FileSystemUtilities.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10236
diff changeset
569 text, fileName=FileSystemUtilities.deviceFileName(name)
10236
c270c9501f1c MicroPython interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10143
diff changeset
570 )
c270c9501f1c MicroPython interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10143
diff changeset
571 except UnicodeDecodeError:
c270c9501f1c MicroPython interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10143
diff changeset
572 EricMessageBox.warning(
c270c9501f1c MicroPython interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10143
diff changeset
573 self,
c270c9501f1c MicroPython interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10143
diff changeset
574 self.tr("Open Device File"),
c270c9501f1c MicroPython interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10143
diff changeset
575 self.tr(
c270c9501f1c MicroPython interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10143
diff changeset
576 "<p>The file <b>{0}</b> does not contain Unicode text.</p>"
c270c9501f1c MicroPython interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10143
diff changeset
577 ).format(name),
c270c9501f1c MicroPython interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10143
diff changeset
578 )
c270c9501f1c MicroPython interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10143
diff changeset
579 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
580
7078
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
581 @pyqtSlot()
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
582 def on_deviceFileTreeWidget_itemSelectionChanged(self):
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
583 """
7081
ed510767c096 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7080
diff changeset
584 Private slot handling a change of selection in the local pane.
7078
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
585 """
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
586 enable = bool(self.deviceFileTreeWidget.selectedItems())
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
587 self.__deviceClearSelectionAct.setEnabled(enable)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
588
7081
ed510767c096 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7080
diff changeset
589 if enable:
ed510767c096 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7080
diff changeset
590 enable &= not (
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
591 self.deviceFileTreeWidget.selectedItems()[0].text(0).endswith("/")
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
592 )
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
593
7081
ed510767c096 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7080
diff changeset
594 self.getButton.setEnabled(enable)
7126
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7108
diff changeset
595 self.getAsButton.setEnabled(enable)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
596
9760
11245ac9c258 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
597 self.openButton.setEnabled(enable)
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
598
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
599 self.__updateSaveButtonStates()
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
600
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
601 @pyqtSlot(QTreeWidgetItem)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
602 def on_deviceFileTreeWidget_itemExpanded(self, item):
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
603 """
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
604 Private slot handling the expansion of a local directory item.
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
605
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
606 @param item reference to the directory item
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
607 @type QTreeWidgetItem
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
608 """
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
609 if item.childCount() == 0:
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
610 # it was not populated yet
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
611 if self.__repl.deviceSupportsLocalFileAccess():
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
612 self.__listLocalFiles(localDevice=True, parentItem=item)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
613 else:
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
614 self.__fileManager.lls(
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
615 item.data(0, Qt.ItemDataRole.UserRole),
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
616 showHidden=Preferences.getMicroPython("ShowHiddenDevice"),
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
617 )
9760
11245ac9c258 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
618
9767
2eed840795c0 Fixed a few issues in the MicroPython file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
619 @pyqtSlot(str)
2eed840795c0 Fixed a few issues in the MicroPython file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
620 def on_deviceCwd_textChanged(self, cwd):
2eed840795c0 Fixed a few issues in the MicroPython file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
621 """
9786
f94b530722af Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9769
diff changeset
622 Private slot handling a change of the current device working directory.
9767
2eed840795c0 Fixed a few issues in the MicroPython file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
623
2eed840795c0 Fixed a few issues in the MicroPython file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
624 @param cwd current device working directory
2eed840795c0 Fixed a few issues in the MicroPython file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
625 @type str
2eed840795c0 Fixed a few issues in the MicroPython file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
626 """
2eed840795c0 Fixed a few issues in the MicroPython file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
627 self.deviceUpButton.setEnabled(cwd != "/")
2eed840795c0 Fixed a few issues in the MicroPython file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
628
7078
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
629 @pyqtSlot()
7080
9a3adf033f90 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7078
diff changeset
630 def on_deviceUpButton_clicked(self):
9a3adf033f90 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7078
diff changeset
631 """
7081
ed510767c096 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7080
diff changeset
632 Private slot to go up one directory level on the device.
ed510767c096 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7080
diff changeset
633 """
ed510767c096 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7080
diff changeset
634 cwd = self.deviceCwd.text()
ed510767c096 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7080
diff changeset
635 dirname = os.path.dirname(cwd)
9767
2eed840795c0 Fixed a few issues in the MicroPython file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
636 if self.__repl.deviceSupportsLocalFileAccess():
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
637 self.__listLocalFiles(dirname=dirname, localDevice=True)
7131
f75e990caf99 MicroPythonFileManager: finished the file access via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7130
diff changeset
638 else:
f75e990caf99 MicroPythonFileManager: finished the file access via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7130
diff changeset
639 self.__fileManager.cd(dirname)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
640
7084
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
641 @pyqtSlot()
8067
a467ab075be0 MicroPython: added buttons to go to the 'home' directory (local and on device) to the MicroPython file manager and improved the workspace handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8058
diff changeset
642 def on_deviceHomeButton_clicked(self):
a467ab075be0 MicroPython: added buttons to go to the 'home' directory (local and on device) to the MicroPython file manager and improved the workspace handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8058
diff changeset
643 """
a467ab075be0 MicroPython: added buttons to go to the 'home' directory (local and on device) to the MicroPython file manager and improved the workspace handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8058
diff changeset
644 Private slot to move to the device home directory.
a467ab075be0 MicroPython: added buttons to go to the 'home' directory (local and on device) to the MicroPython file manager and improved the workspace handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8058
diff changeset
645 """
9767
2eed840795c0 Fixed a few issues in the MicroPython file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
646 if self.__repl.deviceSupportsLocalFileAccess():
8067
a467ab075be0 MicroPython: added buttons to go to the 'home' directory (local and on device) to the MicroPython file manager and improved the workspace handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8058
diff changeset
647 dirname = self.__repl.getDeviceWorkspace()
a467ab075be0 MicroPython: added buttons to go to the 'home' directory (local and on device) to the MicroPython file manager and improved the workspace handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8058
diff changeset
648 if dirname:
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
649 self.__listLocalFiles(dirname=dirname, localDevice=True)
8067
a467ab075be0 MicroPython: added buttons to go to the 'home' directory (local and on device) to the MicroPython file manager and improved the workspace handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8058
diff changeset
650 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
651
8067
a467ab075be0 MicroPython: added buttons to go to the 'home' directory (local and on device) to the MicroPython file manager and improved the workspace handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8058
diff changeset
652 # list files via device script
a467ab075be0 MicroPython: added buttons to go to the 'home' directory (local and on device) to the MicroPython file manager and improved the workspace handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8058
diff changeset
653 self.__fileManager.cd("/")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
654
8067
a467ab075be0 MicroPython: added buttons to go to the 'home' directory (local and on device) to the MicroPython file manager and improved the workspace handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8058
diff changeset
655 @pyqtSlot()
7084
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
656 def on_deviceReloadButton_clicked(self):
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
657 """
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
658 Private slot to reload the device list.
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
659 """
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
660 dirname = self.deviceCwd.text()
9767
2eed840795c0 Fixed a few issues in the MicroPython file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
661 if self.__repl.deviceSupportsLocalFileAccess():
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
662 self.__repopulateLocalFilesList(dirname=dirname, localDevice=True)
7084
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
663 else:
7131
f75e990caf99 MicroPythonFileManager: finished the file access via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7130
diff changeset
664 if dirname:
7137
4ed2573947ff MicroPythonFileManagerWidget: added option to show hidden files to the local and device files list context menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7134
diff changeset
665 self.__newDeviceList()
7131
f75e990caf99 MicroPythonFileManager: finished the file access via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7130
diff changeset
666 else:
f75e990caf99 MicroPythonFileManager: finished the file access via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7130
diff changeset
667 self.__fileManager.pwd()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
668
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
669 def __isFileInList(self, filename, parent):
7080
9a3adf033f90 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7078
diff changeset
670 """
7081
ed510767c096 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7080
diff changeset
671 Private method to check, if a file name is contained in a tree widget.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
672
7081
ed510767c096 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7080
diff changeset
673 @param filename name of the file to check
ed510767c096 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7080
diff changeset
674 @type str
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
675 @param parent reference to the parent to be checked against
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
676 @type QTreeWidget or QTreeWidgetItem
7081
ed510767c096 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7080
diff changeset
677 @return flag indicating that the file name is present
ed510767c096 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7080
diff changeset
678 @rtype bool
ed510767c096 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7080
diff changeset
679 """
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
680 if isinstance(parent, QTreeWidgetItem):
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
681 itemCount = parent.childCount()
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
682 return itemCount > 0 and any(
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
683 parent.child(row).text(0) == filename for row in range(itemCount)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
684 )
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
685 else:
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
686 itemCount = parent.topLevelItemCount()
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
687 return itemCount > 0 and any(
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
688 parent.topLevelItem(row).text(0) == filename for row in range(itemCount)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
689 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
690
7080
9a3adf033f90 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7078
diff changeset
691 @pyqtSlot()
7126
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7108
diff changeset
692 def on_putButton_clicked(self, putAs=False):
7078
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
693 """
7081
ed510767c096 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7080
diff changeset
694 Private slot to copy the selected file to the connected device.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
695
7126
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7108
diff changeset
696 @param putAs flag indicating to give it a new name
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7108
diff changeset
697 @type bool
7078
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
698 """
7081
ed510767c096 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7080
diff changeset
699 selectedItems = self.localFileTreeWidget.selectedItems()
ed510767c096 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7080
diff changeset
700 if selectedItems:
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
701 filepath = selectedItems[0].data(0, Qt.ItemDataRole.UserRole)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
702 filename = os.path.basename(filepath)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
703 if not selectedItems[0].text(0).endswith("/"):
7081
ed510767c096 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7080
diff changeset
704 # it is really a file
7126
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7108
diff changeset
705 if putAs:
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7108
diff changeset
706 deviceFilename, ok = QInputDialog.getText(
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7108
diff changeset
707 self,
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7108
diff changeset
708 self.tr("Put File As"),
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7108
diff changeset
709 self.tr("Enter a new name for the file"),
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8067
diff changeset
710 QLineEdit.EchoMode.Normal,
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
711 filename,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
712 )
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
713 if not ok or not deviceFilename:
7126
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7108
diff changeset
714 return
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7108
diff changeset
715 else:
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7108
diff changeset
716 deviceFilename = filename
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
717
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
718 selectedDeviceItems = self.deviceFileTreeWidget.selectedItems()
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
719 if selectedDeviceItems:
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
720 item = selectedDeviceItems[0]
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
721 if not item.text(0).endswith("/"):
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
722 # it is no directory, take its parent
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
723 item = item.parent()
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
724 devicePath = (
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
725 self.deviceCwd.text()
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
726 if item is None
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
727 else item.data(0, Qt.ItemDataRole.UserRole)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
728 )
10896
9cbbed624751 Fixed a few issues in the MicroPython file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10806
diff changeset
729 deviceParent = self.deviceFileTreeWidget if item is None else item
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
730 else:
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
731 devicePath = self.deviceCwd.text()
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
732 deviceParent = self.deviceFileTreeWidget
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
733
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
734 if self.__isFileInList(deviceFilename, deviceParent):
7081
ed510767c096 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7080
diff changeset
735 # ask for overwrite permission
7083
217862c28319 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7082
diff changeset
736 action, resultFilename = confirmOverwrite(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
737 deviceFilename,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
738 self.tr("Copy File to Device"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
739 self.tr(
9576
be9f8e7e42e0 Corrected some 'wrong' string quotes caused by the Black line merging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
740 "The given file exists already (Enter file name only)."
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
741 ),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
742 False,
11006
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11005
diff changeset
743 parent=self,
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
744 )
7083
217862c28319 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7082
diff changeset
745 if action == "cancel":
217862c28319 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7082
diff changeset
746 return
217862c28319 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7082
diff changeset
747 elif action == "rename":
217862c28319 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7082
diff changeset
748 deviceFilename = os.path.basename(resultFilename)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
749
9767
2eed840795c0 Fixed a few issues in the MicroPython file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
750 if self.__repl.deviceSupportsLocalFileAccess():
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
751 shutil.copy2(filepath, os.path.join(devicePath, deviceFilename))
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
752 self.__listLocalFiles(dirname=devicePath, localDevice=True)
7131
f75e990caf99 MicroPythonFileManager: finished the file access via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7130
diff changeset
753 else:
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
754 if devicePath:
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
755 deviceFilename = (
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
756 f"{devicePath}/{deviceFilename}"
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
757 if devicePath != "/"
10896
9cbbed624751 Fixed a few issues in the MicroPython file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10806
diff changeset
758 else f"/{deviceFilename}"
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
759 )
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
760 self.__fileManager.put(filepath, deviceFilename)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
761
7078
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
762 @pyqtSlot()
7126
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7108
diff changeset
763 def on_putAsButton_clicked(self):
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7108
diff changeset
764 """
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7108
diff changeset
765 Private slot to copy the selected file to the connected device
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7108
diff changeset
766 with a different name.
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7108
diff changeset
767 """
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7108
diff changeset
768 self.on_putButton_clicked(putAs=True)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
769
7126
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7108
diff changeset
770 @pyqtSlot()
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7108
diff changeset
771 def on_getButton_clicked(self, getAs=False):
7078
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
772 """
7081
ed510767c096 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7080
diff changeset
773 Private slot to copy the selected file from the connected device.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
774
7126
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7108
diff changeset
775 @param getAs flag indicating to give it a new name
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7108
diff changeset
776 @type bool
7081
ed510767c096 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7080
diff changeset
777 """
ed510767c096 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7080
diff changeset
778 selectedItems = self.deviceFileTreeWidget.selectedItems()
ed510767c096 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7080
diff changeset
779 if selectedItems:
ed510767c096 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7080
diff changeset
780 filename = selectedItems[0].text(0).strip()
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
781 deviceFilename = selectedItems[0].data(0, Qt.ItemDataRole.UserRole)
7081
ed510767c096 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7080
diff changeset
782 if not filename.endswith("/"):
ed510767c096 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7080
diff changeset
783 # it is really a file
7126
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7108
diff changeset
784 if getAs:
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7108
diff changeset
785 localFilename, ok = QInputDialog.getText(
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7108
diff changeset
786 self,
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7108
diff changeset
787 self.tr("Get File As"),
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7108
diff changeset
788 self.tr("Enter a new name for the file"),
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8067
diff changeset
789 QLineEdit.EchoMode.Normal,
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
790 filename,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
791 )
7126
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7108
diff changeset
792 if not ok or not filename:
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7108
diff changeset
793 return
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7108
diff changeset
794 else:
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7108
diff changeset
795 localFilename = filename
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
796
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
797 selectedLocalItems = self.localFileTreeWidget.selectedItems()
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
798 if selectedLocalItems:
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
799 item = selectedLocalItems[0]
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
800 if not item.text(0).endswith("/"):
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
801 # it is no directory, take its parent
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
802 item = item.parent()
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
803 localPath = (
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
804 self.localCwd.text()
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
805 if item is None
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
806 else item.data(0, Qt.ItemDataRole.UserRole)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
807 )
10896
9cbbed624751 Fixed a few issues in the MicroPython file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10806
diff changeset
808 localParent = self.localFileTreeWidget if item is None else item
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
809 else:
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
810 localPath = self.localCwd.text()
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
811 localParent = self.localFileTreeWidget
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
812
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
813 if self.__isFileInList(localFilename, localParent):
7081
ed510767c096 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7080
diff changeset
814 # ask for overwrite permission
7083
217862c28319 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7082
diff changeset
815 action, resultFilename = confirmOverwrite(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
816 localFilename,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
817 self.tr("Copy File from Device"),
7083
217862c28319 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7082
diff changeset
818 self.tr("The given file exists already."),
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
819 True,
11006
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11005
diff changeset
820 parent=self,
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
821 )
7083
217862c28319 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7082
diff changeset
822 if action == "cancel":
217862c28319 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7082
diff changeset
823 return
217862c28319 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7082
diff changeset
824 elif action == "rename":
217862c28319 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7082
diff changeset
825 localFilename = resultFilename
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
826
9767
2eed840795c0 Fixed a few issues in the MicroPython file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
827 if self.__repl.deviceSupportsLocalFileAccess():
7131
f75e990caf99 MicroPythonFileManager: finished the file access via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7130
diff changeset
828 shutil.copy2(
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
829 deviceFilename,
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
830 os.path.join(localPath, localFilename),
7131
f75e990caf99 MicroPythonFileManager: finished the file access via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7130
diff changeset
831 )
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
832 if isinstance(localParent, QTreeWidgetItem):
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
833 self.__listLocalFiles(parentItem=localParent)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
834 else:
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
835 self.__listLocalFiles(dirname=localPath)
7131
f75e990caf99 MicroPythonFileManager: finished the file access via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7130
diff changeset
836 else:
f75e990caf99 MicroPythonFileManager: finished the file access via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7130
diff changeset
837 self.__fileManager.get(
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
838 deviceFilename, os.path.join(localPath, localFilename)
7131
f75e990caf99 MicroPythonFileManager: finished the file access via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7130
diff changeset
839 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
840
7126
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7108
diff changeset
841 @pyqtSlot()
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7108
diff changeset
842 def on_getAsButton_clicked(self):
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7108
diff changeset
843 """
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7108
diff changeset
844 Private slot to copy the selected file from the connected device
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7108
diff changeset
845 with a different name.
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7108
diff changeset
846 """
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7108
diff changeset
847 self.on_getButton_clicked(getAs=True)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
848
7081
ed510767c096 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7080
diff changeset
849 @pyqtSlot(str, str)
10690
fab36645aa7d Changed the source code and the source code documentation to improve the indication of unused method/function arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10523
diff changeset
850 def __handleGetDone(self, _deviceFile, localFile):
7078
bca506f8c756 MicroPython: started to implement the file manager widget; added the forgotten MicroPythonFileManagerWidget.[py, ui] files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
851 """
7081
ed510767c096 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7080
diff changeset
852 Private slot handling a successful copy of a file from the device.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
853
10690
fab36645aa7d Changed the source code and the source code documentation to improve the indication of unused method/function arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10523
diff changeset
854 @param _deviceFile name of the file on the device (unused)
7081
ed510767c096 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7080
diff changeset
855 @type str
ed510767c096 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7080
diff changeset
856 @param localFile name of the local file
ed510767c096 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7080
diff changeset
857 @type str
ed510767c096 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7080
diff changeset
858 """
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
859 localPath = os.path.dirname(localFile)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
860
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
861 # find the directory entry associated with the new file
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
862 localParent = self.__findDirectoryItem(localPath, self.localFileTreeWidget)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
863
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
864 if localParent:
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
865 self.__listLocalFiles(parentItem=localParent)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
866 else:
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
867 self.__listLocalFiles(dirname=self.localCwd.text())
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
868
7081
ed510767c096 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7080
diff changeset
869 @pyqtSlot()
ed510767c096 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7080
diff changeset
870 def on_syncButton_clicked(self):
ed510767c096 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7080
diff changeset
871 """
ed510767c096 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7080
diff changeset
872 Private slot to synchronize the local directory to the device.
ed510767c096 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7080
diff changeset
873 """
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
874 # 1. local directory
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
875 selectedItems = self.localFileTreeWidget.selectedItems()
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
876 if selectedItems:
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
877 localName = selectedItems[0].text(0)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
878 if localName.endswith("/"):
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
879 localDirPath = selectedItems[0].data(0, Qt.ItemDataRole.UserRole)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
880 else:
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
881 # it is not a directory
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
882 localDirPath = os.path.dirname(
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
883 selectedItems[0].data(0, Qt.ItemDataRole.UserRole)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
884 )
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
885 else:
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
886 localName = ""
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
887 localDirPath = self.localCwd.text()
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
888
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
889 # 2. device directory
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
890 selectedItems = self.deviceFileTreeWidget.selectedItems()
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
891 if selectedItems:
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
892 if not selectedItems[0].text(0).endswith("/"):
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
893 # it is not a directory
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
894 deviceDirPath = os.path.dirname(
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
895 selectedItems[0].data(0, Qt.ItemDataRole.UserRole)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
896 )
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
897 else:
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
898 deviceDirPath = selectedItems[0].data(0, Qt.ItemDataRole.UserRole)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
899 else:
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
900 if localDirPath == self.localCwd.text():
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
901 # syncronize complete local directory
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
902 deviceDirPath = self.deviceCwd.text()
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
903 else:
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
904 deviceCwd = self.deviceCwd.text()
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
905 deviceDirPath = (
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
906 f"{deviceCwd}{localName[:-1]}"
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
907 if deviceCwd.endswith("/")
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
908 else f"{deviceCwd}/{localName[:-1]}"
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
909 )
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
910
7081
ed510767c096 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7080
diff changeset
911 self.__fileManager.rsync(
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
912 localDirPath,
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
913 deviceDirPath,
7131
f75e990caf99 MicroPythonFileManager: finished the file access via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7130
diff changeset
914 mirror=True,
9767
2eed840795c0 Fixed a few issues in the MicroPython file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
915 localDevice=self.__repl.deviceSupportsLocalFileAccess(),
7081
ed510767c096 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7080
diff changeset
916 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
917
7081
ed510767c096 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7080
diff changeset
918 @pyqtSlot(str, str)
10690
fab36645aa7d Changed the source code and the source code documentation to improve the indication of unused method/function arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10523
diff changeset
919 def __handleRsyncDone(self, _localDir, _deviceDir):
7081
ed510767c096 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7080
diff changeset
920 """
ed510767c096 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7080
diff changeset
921 Private method to handle the completion of the rsync operation.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
922
10690
fab36645aa7d Changed the source code and the source code documentation to improve the indication of unused method/function arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10523
diff changeset
923 @param _localDir name of the local directory (unused)
7081
ed510767c096 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7080
diff changeset
924 @type str
10690
fab36645aa7d Changed the source code and the source code documentation to improve the indication of unused method/function arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10523
diff changeset
925 @param _deviceDir name of the device directory (unused)
7081
ed510767c096 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7080
diff changeset
926 @type str
ed510767c096 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7080
diff changeset
927 """
8058
9769eb548f0d MicroPython: implemented some fixes for issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
928 # simulate button presses to reload the two lists
9769eb548f0d MicroPython: implemented some fixes for issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
929 self.on_localReloadButton_clicked()
9769eb548f0d MicroPython: implemented some fixes for issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
930 self.on_deviceReloadButton_clicked()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
931
7083
217862c28319 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7082
diff changeset
932 @pyqtSlot(str)
217862c28319 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7082
diff changeset
933 def __handleRsyncProgressMessage(self, message):
217862c28319 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7082
diff changeset
934 """
217862c28319 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7082
diff changeset
935 Private slot handling progress messages sent by the file manager.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
936
7084
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
937 @param message message to be shown
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
938 @type str
7083
217862c28319 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7082
diff changeset
939 """
9482
a2bc06a54d9d Corrected/acknowledged some bad import style and removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
940 from .MicroPythonProgressInfoDialog import MicroPythonProgressInfoDialog
a2bc06a54d9d Corrected/acknowledged some bad import style and removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
941
7084
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
942 if self.__progressInfoDialog is None:
11005
b918c6c2736b MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10927
diff changeset
943 self.__progressInfoDialog = MicroPythonProgressInfoDialog(parent=self)
7084
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
944 self.__progressInfoDialog.finished.connect(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
945 self.__progressInfoDialogFinished
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
946 )
7084
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
947 self.__progressInfoDialog.show()
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
948 self.__progressInfoDialog.addMessage(message)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
949
7084
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
950 @pyqtSlot()
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
951 def __progressInfoDialogFinished(self):
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
952 """
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
953 Private slot handling the closing of the progress info dialog.
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
954 """
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
955 self.__progressInfoDialog.deleteLater()
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
956 self.__progressInfoDialog = None
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
957
7082
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
958 @pyqtSlot()
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
959 def __newDeviceList(self):
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
960 """
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
961 Private slot to initiate a new long list of the device directory.
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
962 """
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
963 self.__expandedDeviceEntries.clear()
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
964 itm = self.deviceFileTreeWidget.topLevelItem(0)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
965 while itm:
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
966 if itm.isExpanded():
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
967 self.__expandedDeviceEntries.append(
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
968 itm.data(0, Qt.ItemDataRole.UserRole)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
969 )
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
970 itm = self.deviceFileTreeWidget.itemBelow(itm)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
971
7137
4ed2573947ff MicroPythonFileManagerWidget: added option to show hidden files to the local and device files list context menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7134
diff changeset
972 self.__fileManager.lls(
4ed2573947ff MicroPythonFileManagerWidget: added option to show hidden files to the local and device files list context menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7134
diff changeset
973 self.deviceCwd.text(),
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
974 showHidden=Preferences.getMicroPython("ShowHiddenDevice"),
7137
4ed2573947ff MicroPythonFileManagerWidget: added option to show hidden files to the local and device files list context menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7134
diff changeset
975 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
976
9760
11245ac9c258 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
977 @pyqtSlot()
11245ac9c258 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
978 def on_openButton_clicked(self):
11245ac9c258 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
979 """
11245ac9c258 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
980 Private slot to open the selected file in a new editor.
11245ac9c258 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
981 """
11245ac9c258 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
982 selectedItems = self.deviceFileTreeWidget.selectedItems()
11245ac9c258 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
983 if selectedItems:
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
984 name = selectedItems[0].data(0, Qt.ItemDataRole.UserRole)
9767
2eed840795c0 Fixed a few issues in the MicroPython file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
985 if self.__repl.deviceSupportsLocalFileAccess():
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
986 if not selectedItems[0].text(0).endswith("/") and MimeTypes.isTextFile(
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
987 name
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
988 ):
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
989 self.__viewmanager.getEditor(name)
9760
11245ac9c258 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
990 else:
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
991 if not selectedItems[0].text(0).endswith("/"):
9760
11245ac9c258 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
992 data = self.__fileManager.getData(name)
9765
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9764
diff changeset
993 text = data.decode(encoding="utf-8")
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
994 self.__viewmanager.newEditorWithText(
10388
a34ce7f42e8b Made the code dealing with "device:" and "remote:" file names generally available in FileSystemUtilities.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10236
diff changeset
995 text, "Python3", FileSystemUtilities.deviceFileName(name)
9760
11245ac9c258 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
996 )
11245ac9c258 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
997
11245ac9c258 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
998 @pyqtSlot()
11245ac9c258 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
999 def on_saveButton_clicked(self, saveAs=False):
11245ac9c258 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
1000 """
11245ac9c258 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
1001 Private slot to save the text of the current editor to a file on the device.
9765
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9764
diff changeset
1002
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9764
diff changeset
1003 @param saveAs flag indicating to save the file with a new name
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9764
diff changeset
1004 @type bool
9760
11245ac9c258 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
1005 """
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1006 aw = self.__viewmanager.activeWindow()
10512
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
1007 if aw:
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
1008 selectedItems = self.deviceFileTreeWidget.selectedItems()
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1009
10512
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
1010 if selectedItems:
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1011 filepath = selectedItems[0].data(0, Qt.ItemDataRole.UserRole)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1012 filename = os.path.basename(filepath)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1013 if selectedItems[0].text(0).endswith("/"):
10512
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
1014 saveAs = True
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
1015 else:
9760
11245ac9c258 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
1016 saveAs = True
10512
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
1017 filename = ""
9760
11245ac9c258 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
1018
10512
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
1019 if saveAs:
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
1020 filename, ok = QInputDialog.getText(
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
1021 self,
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
1022 self.tr("Save File As"),
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
1023 self.tr("Enter a new name for the file:"),
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
1024 QLineEdit.EchoMode.Normal,
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
1025 filename,
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
1026 )
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
1027 if not ok or not filename:
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
1028 return
9760
11245ac9c258 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
1029
10512
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
1030 if not saveAs:
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
1031 # check editor and selected file names for an implicit 'save as'
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
1032 editorFileName = os.path.basename(
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
1033 FileSystemUtilities.plainFileName(aw.getFileName())
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
1034 )
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
1035 if editorFileName != filename:
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
1036 saveAs = True
9764
57496966803c Fixed a few issues in the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9760
diff changeset
1037
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1038 if selectedItems:
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1039 item = selectedItems[0]
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1040 if not item.text(0).endswith("/"):
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1041 # it is no directory, take its parent
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1042 item = item.parent()
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1043 devicePath = (
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1044 self.deviceCwd.text()
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1045 if item is None
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1046 else item.data(0, Qt.ItemDataRole.UserRole)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1047 )
10896
9cbbed624751 Fixed a few issues in the MicroPython file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10806
diff changeset
1048 deviceParent = self.deviceFileTreeWidget if item is None else item
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1049 else:
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1050 devicePath = self.deviceCwd.text()
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1051 deviceParent = self.deviceFileTreeWidget
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1052
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1053 if saveAs and self.__isFileInList(filename, deviceParent):
10512
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
1054 # ask for overwrite permission
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
1055 action, resultFilename = confirmOverwrite(
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
1056 filename,
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
1057 self.tr("Save File As"),
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
1058 self.tr("The given file exists already (Enter file name only)."),
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
1059 False,
11006
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11005
diff changeset
1060 parent=self,
10512
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
1061 )
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
1062 if action == "cancel":
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
1063 return
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
1064 elif action == "rename":
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
1065 filename = os.path.basename(resultFilename)
9760
11245ac9c258 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
1066
10512
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
1067 text = aw.text()
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
1068 if self.__repl.deviceSupportsLocalFileAccess():
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1069 filename = os.path.join(devicePath, filename)
10512
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
1070 os.makedirs(os.path.dirname(filename), exist_ok=True)
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
1071 with open(filename, "w") as f:
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
1072 f.write(text)
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
1073 self.__newDeviceList()
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
1074 aw.setFileName(filename)
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
1075 else:
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1076 filename = (
10898
8349907e1319 Corrected a code formatting issue.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10896
diff changeset
1077 f"{devicePath}/{filename}" if devicePath != "/" else f"/{filename}"
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1078 )
10512
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
1079 dirname = filename.rsplit("/", 1)[0]
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
1080 self.__fileManager.makedirs(dirname)
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
1081 self.__fileManager.putData(filename, text.encode("utf-8"))
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
1082 aw.setFileName(FileSystemUtilities.deviceFileName(filename))
9760
11245ac9c258 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
1083
10512
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
1084 aw.setModified(False)
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1085 with contextlib.suppress(AttributeError):
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1086 aw.resetOnlineChangeTraceInfo()
9760
11245ac9c258 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
1087
11245ac9c258 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
1088 @pyqtSlot()
11245ac9c258 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
1089 def on_saveAsButton_clicked(self):
11245ac9c258 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
1090 """
11245ac9c258 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
1091 Private slot to save the current editor in a new file on the connected device.
11245ac9c258 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
1092 """
11245ac9c258 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
1093 self.on_saveButton_clicked(saveAs=True)
11245ac9c258 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
1094
7082
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1095 ##################################################################
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1096 ## Context menu methods for the local files below
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1097 ##################################################################
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1098
7082
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1099 @pyqtSlot(QPoint)
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1100 def __showLocalContextMenu(self, pos):
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1101 """
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1102 Private slot to show the REPL context menu.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1103
7082
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1104 @param pos position to show the menu at
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1105 @type QPoint
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1106 """
7084
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
1107 hasSelection = bool(len(self.localFileTreeWidget.selectedItems()))
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
1108 if hasSelection:
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
1109 name = self.localFileTreeWidget.selectedItems()[0].text(0)
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
1110 isDir = name.endswith("/")
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1111 isLink = name.endswith("@")
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1112 isFile = not (isDir or isLink)
7084
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
1113 else:
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
1114 isDir = False
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
1115 isFile = False
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
1116 self.__localDelDirTreeAct.setEnabled(isDir)
10515
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
1117 self.__localRenameFileAct.setEnabled(isFile)
7084
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
1118 self.__localDelFileAct.setEnabled(isFile)
10911
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1119 self.__openLocalFileAct.setEnabled(isFile)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1120
7759
51aa6c6b66f7 Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1121 self.__localMenu.exec(self.localFileTreeWidget.mapToGlobal(pos))
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1122
7082
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1123 @pyqtSlot()
7130
6014d37d9683 Started to prepare the MicroPython file manager to access the device file system via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7126
diff changeset
1124 def __changeLocalDirectory(self, localDevice=False):
7082
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1125 """
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1126 Private slot to change the local directory.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1127
7130
6014d37d9683 Started to prepare the MicroPython file manager to access the device file system via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7126
diff changeset
1128 @param localDevice flag indicating device access via local file system
6014d37d9683 Started to prepare the MicroPython file manager to access the device file system via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7126
diff changeset
1129 @type bool
7082
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1130 """
8234
fcb6b4b96274 Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8221
diff changeset
1131 cwdWidget = self.deviceCwd if localDevice else self.localCwd
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1132 fileTreeWidget = (
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1133 self.deviceFileTreeWidget if localDevice else self.localFileTreeWidget
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1134 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1135
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1136 if fileTreeWidget.selectedItems():
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1137 defaultPath = fileTreeWidget.selectedItems()[0].data(
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1138 0, Qt.ItemDataRole.UserRole
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1139 )
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1140 if not os.path.isdir(defaultPath):
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1141 defaultPath = os.path.dirname(defaultPath)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1142 else:
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1143 defaultPath = cwdWidget.text()
9238
a7cbf3d61498 EricPathPicker, EricPathPickerDialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
1144 dirPath, ok = EricPathPickerDialog.getStrPath(
7082
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1145 self,
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1146 self.tr("Change Directory"),
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1147 self.tr("Select Directory"),
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8327
diff changeset
1148 EricPathPickerModes.DIRECTORY_SHOW_FILES_MODE,
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1149 strPath=defaultPath,
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1150 defaultDirectory=defaultPath,
7082
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1151 )
7083
217862c28319 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7082
diff changeset
1152 if ok and dirPath:
217862c28319 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7082
diff changeset
1153 if not os.path.isabs(dirPath):
7130
6014d37d9683 Started to prepare the MicroPython file manager to access the device file system via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7126
diff changeset
1154 dirPath = os.path.join(cwdWidget.text(), dirPath)
6014d37d9683 Started to prepare the MicroPython file manager to access the device file system via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7126
diff changeset
1155 cwdWidget.setText(dirPath)
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1156 self.__listLocalFiles(dirname=dirPath, localDevice=localDevice)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1157
7084
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
1158 @pyqtSlot()
7130
6014d37d9683 Started to prepare the MicroPython file manager to access the device file system via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7126
diff changeset
1159 def __createLocalDirectory(self, localDevice=False):
7084
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
1160 """
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
1161 Private slot to create a local directory.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1162
7130
6014d37d9683 Started to prepare the MicroPython file manager to access the device file system via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7126
diff changeset
1163 @param localDevice flag indicating device access via local file system
6014d37d9683 Started to prepare the MicroPython file manager to access the device file system via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7126
diff changeset
1164 @type bool
7084
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
1165 """
8234
fcb6b4b96274 Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8221
diff changeset
1166 cwdWidget = self.deviceCwd if localDevice else self.localCwd
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1167 fileTreeWidget = (
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1168 self.deviceFileTreeWidget if localDevice else self.localFileTreeWidget
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1169 )
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1170
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1171 if fileTreeWidget.selectedItems():
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1172 localItem = fileTreeWidget.selectedItems()[0]
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1173 defaultPath = localItem.data(0, Qt.ItemDataRole.UserRole)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1174 if not os.path.isdir(defaultPath):
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1175 defaultPath = os.path.dirname(defaultPath)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1176 localItem = localItem.parent()
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1177 else:
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1178 defaultPath = cwdWidget.text()
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1179 localItem = None
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1180
7084
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
1181 dirPath, ok = QInputDialog.getText(
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
1182 self,
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
1183 self.tr("Create Directory"),
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
1184 self.tr("Enter directory name:"),
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1185 QLineEdit.EchoMode.Normal,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1186 )
7084
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
1187 if ok and dirPath:
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1188 dirPath = os.path.join(defaultPath, dirPath)
7084
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
1189 try:
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
1190 os.mkdir(dirPath)
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1191 if localItem:
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1192 self.__listLocalFiles(localDevice=localDevice, parentItem=localItem)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1193 else:
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1194 self.__listLocalFiles(
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1195 dirname=cwdWidget.text(), localDevice=localDevice
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1196 )
7836
2f0d208b8137 Changed code to not use the OSError aliases (IOError, EnvironmentError, socket.error and select.error) anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7780
diff changeset
1197 except OSError as exc:
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8327
diff changeset
1198 EricMessageBox.critical(
7084
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
1199 self,
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
1200 self.tr("Create Directory"),
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1201 self.tr(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1202 """<p>The directory <b>{0}</b> could not be"""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1203 """ created.</p><p>Reason: {1}</p>"""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1204 ).format(dirPath, str(exc)),
7084
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
1205 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1206
7084
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
1207 @pyqtSlot()
7130
6014d37d9683 Started to prepare the MicroPython file manager to access the device file system via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7126
diff changeset
1208 def __deleteLocalDirectoryTree(self, localDevice=False):
7084
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
1209 """
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
1210 Private slot to delete a local directory tree.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1211
7130
6014d37d9683 Started to prepare the MicroPython file manager to access the device file system via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7126
diff changeset
1212 @param localDevice flag indicating device access via local file system
6014d37d9683 Started to prepare the MicroPython file manager to access the device file system via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7126
diff changeset
1213 @type bool
7084
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
1214 """
7130
6014d37d9683 Started to prepare the MicroPython file manager to access the device file system via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7126
diff changeset
1215 if localDevice:
6014d37d9683 Started to prepare the MicroPython file manager to access the device file system via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7126
diff changeset
1216 cwdWidget = self.deviceCwd
6014d37d9683 Started to prepare the MicroPython file manager to access the device file system via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7126
diff changeset
1217 fileTreeWidget = self.deviceFileTreeWidget
6014d37d9683 Started to prepare the MicroPython file manager to access the device file system via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7126
diff changeset
1218 else:
6014d37d9683 Started to prepare the MicroPython file manager to access the device file system via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7126
diff changeset
1219 cwdWidget = self.localCwd
6014d37d9683 Started to prepare the MicroPython file manager to access the device file system via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7126
diff changeset
1220 fileTreeWidget = self.localFileTreeWidget
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1221
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1222 if bool(fileTreeWidget.selectedItems()):
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1223 localItem = fileTreeWidget.selectedItems()[0]
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1224 parentItem = localItem.parent()
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1225 dirname = localItem.data(0, Qt.ItemDataRole.UserRole)
7084
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
1226 dlg = DeleteFilesConfirmationDialog(
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
1227 self,
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
1228 self.tr("Delete Directory Tree"),
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1229 self.tr("Do you really want to delete this directory tree?"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1230 [dirname],
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1231 )
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8067
diff changeset
1232 if dlg.exec() == QDialog.DialogCode.Accepted:
7084
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
1233 try:
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
1234 shutil.rmtree(dirname)
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1235 if parentItem:
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1236 self.__listLocalFiles(
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1237 localDevice=localDevice, parentItem=parentItem
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1238 )
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1239 else:
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1240 self.__listLocalFiles(
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1241 dirname=cwdWidget.text(), localDevice=localDevice
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1242 )
7084
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
1243 except Exception as exc:
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8327
diff changeset
1244 EricMessageBox.critical(
7084
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
1245 self,
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
1246 self.tr("Delete Directory Tree"),
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1247 self.tr(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1248 """<p>The directory <b>{0}</b> could not be"""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1249 """ deleted.</p><p>Reason: {1}</p>"""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1250 ).format(dirname, str(exc)),
7084
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
1251 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1252
7084
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
1253 @pyqtSlot()
7131
f75e990caf99 MicroPythonFileManager: finished the file access via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7130
diff changeset
1254 def __deleteLocalFile(self, localDevice=False):
7084
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
1255 """
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
1256 Private slot to delete a local file.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1257
7131
f75e990caf99 MicroPythonFileManager: finished the file access via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7130
diff changeset
1258 @param localDevice flag indicating device access via local file system
f75e990caf99 MicroPythonFileManager: finished the file access via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7130
diff changeset
1259 @type bool
7084
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
1260 """
7131
f75e990caf99 MicroPythonFileManager: finished the file access via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7130
diff changeset
1261 if localDevice:
f75e990caf99 MicroPythonFileManager: finished the file access via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7130
diff changeset
1262 cwdWidget = self.deviceCwd
f75e990caf99 MicroPythonFileManager: finished the file access via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7130
diff changeset
1263 fileTreeWidget = self.deviceFileTreeWidget
f75e990caf99 MicroPythonFileManager: finished the file access via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7130
diff changeset
1264 else:
f75e990caf99 MicroPythonFileManager: finished the file access via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7130
diff changeset
1265 cwdWidget = self.localCwd
f75e990caf99 MicroPythonFileManager: finished the file access via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7130
diff changeset
1266 fileTreeWidget = self.localFileTreeWidget
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1267
7131
f75e990caf99 MicroPythonFileManager: finished the file access via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7130
diff changeset
1268 if bool(len(fileTreeWidget.selectedItems())):
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1269 localItem = fileTreeWidget.selectedItems()[0]
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1270 parentItem = localItem.parent()
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1271 filename = localItem.data(0, Qt.ItemDataRole.UserRole)
7084
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
1272 dlg = DeleteFilesConfirmationDialog(
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
1273 self,
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
1274 self.tr("Delete File"),
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1275 self.tr("Do you really want to delete this file?"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1276 [filename],
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1277 )
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8067
diff changeset
1278 if dlg.exec() == QDialog.DialogCode.Accepted:
7084
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
1279 try:
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
1280 os.remove(filename)
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1281 if parentItem:
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1282 self.__listLocalFiles(
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1283 localDevice=localDevice, parentItem=parentItem
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1284 )
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1285 else:
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1286 self.__listLocalFiles(
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1287 dirname=cwdWidget.text(), localDevice=localDevice
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1288 )
7836
2f0d208b8137 Changed code to not use the OSError aliases (IOError, EnvironmentError, socket.error and select.error) anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7780
diff changeset
1289 except OSError as exc:
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8327
diff changeset
1290 EricMessageBox.critical(
7084
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
1291 self,
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
1292 self.tr("Delete File"),
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1293 self.tr(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1294 """<p>The file <b>{0}</b> could not be"""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1295 """ deleted.</p><p>Reason: {1}</p>"""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1296 ).format(filename, str(exc)),
7084
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
1297 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1298
10515
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
1299 @pyqtSlot()
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
1300 def __renameLocalFile(self, localDevice=False):
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
1301 """
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
1302 Private slot to rename a file on the device.
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
1303
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
1304 @param localDevice flag indicating device access via local file system
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
1305 (defaults to False)
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
1306 @type bool (optional)
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
1307 """
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1308 fileTreeWidget = (
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1309 self.deviceFileTreeWidget if localDevice else self.localFileTreeWidget
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1310 )
10515
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
1311
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
1312 if bool(len(fileTreeWidget.selectedItems())):
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1313 localItem = fileTreeWidget.selectedItems()[0]
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1314 filename = localItem.data(0, Qt.ItemDataRole.UserRole)
10515
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
1315 newname, ok = QInputDialog.getText(
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
1316 self,
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
1317 self.tr("Rename File"),
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
1318 self.tr("Enter the new path for the file"),
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
1319 QLineEdit.EchoMode.Normal,
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
1320 filename,
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
1321 )
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
1322 if ok and newname:
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
1323 try:
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
1324 os.rename(filename, newname)
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
1325 except OSError as exc:
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
1326 EricMessageBox.critical(
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
1327 self,
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
1328 self.tr("Rename File"),
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
1329 self.tr(
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
1330 """<p>The file <b>{0}</b> could not be"""
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
1331 """ renamed to <b>{1}</b>.</p><p>Reason: {2}</p>"""
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
1332 ).format(filename, newname, str(exc)),
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
1333 )
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
1334
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
1335 # reload the directory listing
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
1336 if localDevice:
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
1337 self.on_deviceReloadButton_clicked()
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
1338 else:
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
1339 self.on_localReloadButton_clicked()
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
1340
7137
4ed2573947ff MicroPythonFileManagerWidget: added option to show hidden files to the local and device files list context menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7134
diff changeset
1341 @pyqtSlot(bool)
4ed2573947ff MicroPythonFileManagerWidget: added option to show hidden files to the local and device files list context menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7134
diff changeset
1342 def __localHiddenChanged(self, checked):
4ed2573947ff MicroPythonFileManagerWidget: added option to show hidden files to the local and device files list context menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7134
diff changeset
1343 """
4ed2573947ff MicroPythonFileManagerWidget: added option to show hidden files to the local and device files list context menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7134
diff changeset
1344 Private slot handling a change of the local show hidden menu entry.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1345
7137
4ed2573947ff MicroPythonFileManagerWidget: added option to show hidden files to the local and device files list context menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7134
diff changeset
1346 @param checked new check state of the action
4ed2573947ff MicroPythonFileManagerWidget: added option to show hidden files to the local and device files list context menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7134
diff changeset
1347 @type bool
4ed2573947ff MicroPythonFileManagerWidget: added option to show hidden files to the local and device files list context menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7134
diff changeset
1348 """
4ed2573947ff MicroPythonFileManagerWidget: added option to show hidden files to the local and device files list context menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7134
diff changeset
1349 Preferences.setMicroPython("ShowHiddenLocal", checked)
4ed2573947ff MicroPythonFileManagerWidget: added option to show hidden files to the local and device files list context menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7134
diff changeset
1350 self.on_localReloadButton_clicked()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1351
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1352 @pyqtSlot()
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1353 def __clearLocalSelection(self):
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1354 """
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1355 Private slot to clear the local selection.
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1356 """
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1357 for item in self.localFileTreeWidget.selectedItems()[:]:
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1358 item.setSelected(False)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1359
7082
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1360 ##################################################################
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1361 ## Context menu methods for the device files below
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1362 ##################################################################
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1363
7082
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1364 @pyqtSlot(QPoint)
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1365 def __showDeviceContextMenu(self, pos):
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1366 """
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1367 Private slot to show the REPL context menu.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1368
7082
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1369 @param pos position to show the menu at
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1370 @type QPoint
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1371 """
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1372 hasSelection = bool(len(self.deviceFileTreeWidget.selectedItems()))
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1373 if hasSelection:
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1374 name = self.deviceFileTreeWidget.selectedItems()[0].text(0)
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1375 isDir = name.endswith("/")
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1376 isFile = not isDir
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1377 else:
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1378 isDir = False
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1379 isFile = False
7126
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7108
diff changeset
1380 if not self.__repl.isMicrobit():
9767
2eed840795c0 Fixed a few issues in the MicroPython file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1381 self.__devDelDirAct.setEnabled(isDir)
7126
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7108
diff changeset
1382 self.__devDelDirTreeAct.setEnabled(isDir)
10515
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
1383 self.__devRenameFileAct.setEnabled(isFile)
7082
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1384 self.__devDelFileAct.setEnabled(isFile)
10911
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1385 self.__openDeviceFileAct.setEnabled(isFile)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1386
7759
51aa6c6b66f7 Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1387 self.__deviceMenu.exec(self.deviceFileTreeWidget.mapToGlobal(pos))
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1388
7082
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1389 @pyqtSlot()
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1390 def __changeDeviceDirectory(self):
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1391 """
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1392 Private slot to change the current directory of the device.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1393
7082
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1394 Note: This triggers a re-population of the device list for the new
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1395 current directory.
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1396 """
9767
2eed840795c0 Fixed a few issues in the MicroPython file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1397 if self.__repl.deviceSupportsLocalFileAccess():
7130
6014d37d9683 Started to prepare the MicroPython file manager to access the device file system via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7126
diff changeset
1398 self.__changeLocalDirectory(True)
6014d37d9683 Started to prepare the MicroPython file manager to access the device file system via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7126
diff changeset
1399 else:
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1400 selectedItems = self.deviceFileTreeWidget.selectedItems()
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1401 if selectedItems:
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1402 item = selectedItems[0]
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1403 dirName = (
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1404 item.data(0, Qt.ItemDataRole.UserRole)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1405 if item.text(0).endswith("/")
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1406 else os.path.dirname(item.data(0, Qt.ItemDataRole.UserRole))
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1407 )
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1408 else:
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1409 dirName = self.deviceCwd.text()
7130
6014d37d9683 Started to prepare the MicroPython file manager to access the device file system via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7126
diff changeset
1410 dirPath, ok = QInputDialog.getText(
6014d37d9683 Started to prepare the MicroPython file manager to access the device file system via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7126
diff changeset
1411 self,
6014d37d9683 Started to prepare the MicroPython file manager to access the device file system via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7126
diff changeset
1412 self.tr("Change Directory"),
6014d37d9683 Started to prepare the MicroPython file manager to access the device file system via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7126
diff changeset
1413 self.tr("Enter the directory path on the device:"),
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8067
diff changeset
1414 QLineEdit.EchoMode.Normal,
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1415 dirName,
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1416 )
7130
6014d37d9683 Started to prepare the MicroPython file manager to access the device file system via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7126
diff changeset
1417 if ok and dirPath:
6014d37d9683 Started to prepare the MicroPython file manager to access the device file system via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7126
diff changeset
1418 if not dirPath.startswith("/"):
6014d37d9683 Started to prepare the MicroPython file manager to access the device file system via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7126
diff changeset
1419 dirPath = self.deviceCwd.text() + "/" + dirPath
6014d37d9683 Started to prepare the MicroPython file manager to access the device file system via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7126
diff changeset
1420 self.__fileManager.cd(dirPath)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1421
7082
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1422 @pyqtSlot()
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1423 def __createDeviceDirectory(self):
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1424 """
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1425 Private slot to create a directory on the device.
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1426 """
9767
2eed840795c0 Fixed a few issues in the MicroPython file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1427 if self.__repl.deviceSupportsLocalFileAccess():
7130
6014d37d9683 Started to prepare the MicroPython file manager to access the device file system via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7126
diff changeset
1428 self.__createLocalDirectory(True)
6014d37d9683 Started to prepare the MicroPython file manager to access the device file system via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7126
diff changeset
1429 else:
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1430 selectedItems = self.deviceFileTreeWidget.selectedItems()
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1431 if selectedItems:
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1432 item = selectedItems[0]
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1433 defaultPath = (
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1434 item.data(0, Qt.ItemDataRole.UserRole)
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1435 if item.text(0).endswith("/")
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1436 else os.path.dirname(item.data(0, Qt.ItemDataRole.UserRole))
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1437 )
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1438 else:
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1439 defaultPath = self.deviceCwd.text()
7130
6014d37d9683 Started to prepare the MicroPython file manager to access the device file system via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7126
diff changeset
1440 dirPath, ok = QInputDialog.getText(
6014d37d9683 Started to prepare the MicroPython file manager to access the device file system via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7126
diff changeset
1441 self,
6014d37d9683 Started to prepare the MicroPython file manager to access the device file system via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7126
diff changeset
1442 self.tr("Create Directory"),
6014d37d9683 Started to prepare the MicroPython file manager to access the device file system via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7126
diff changeset
1443 self.tr("Enter directory name:"),
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1444 QLineEdit.EchoMode.Normal,
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1445 defaultPath,
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1446 )
7130
6014d37d9683 Started to prepare the MicroPython file manager to access the device file system via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7126
diff changeset
1447 if ok and dirPath:
6014d37d9683 Started to prepare the MicroPython file manager to access the device file system via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7126
diff changeset
1448 self.__fileManager.mkdir(dirPath)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1449
7082
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1450 @pyqtSlot()
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1451 def __deleteDeviceDirectory(self):
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1452 """
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1453 Private slot to delete an empty directory on the device.
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1454 """
9767
2eed840795c0 Fixed a few issues in the MicroPython file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1455 if self.__repl.deviceSupportsLocalFileAccess():
7130
6014d37d9683 Started to prepare the MicroPython file manager to access the device file system via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7126
diff changeset
1456 self.__deleteLocalDirectoryTree(True)
6014d37d9683 Started to prepare the MicroPython file manager to access the device file system via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7126
diff changeset
1457 else:
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1458 if bool(self.deviceFileTreeWidget.selectedItems()):
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1459 dirname = self.deviceFileTreeWidget.selectedItems()[0].data(
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1460 0, Qt.ItemDataRole.UserRole
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1461 )
7130
6014d37d9683 Started to prepare the MicroPython file manager to access the device file system via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7126
diff changeset
1462 dlg = DeleteFilesConfirmationDialog(
6014d37d9683 Started to prepare the MicroPython file manager to access the device file system via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7126
diff changeset
1463 self,
6014d37d9683 Started to prepare the MicroPython file manager to access the device file system via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7126
diff changeset
1464 self.tr("Delete Directory"),
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1465 self.tr("Do you really want to delete this directory?"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1466 [dirname],
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1467 )
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8067
diff changeset
1468 if dlg.exec() == QDialog.DialogCode.Accepted:
7130
6014d37d9683 Started to prepare the MicroPython file manager to access the device file system via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7126
diff changeset
1469 self.__fileManager.rmdir(dirname)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1470
7082
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1471 @pyqtSlot()
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1472 def __deleteDeviceDirectoryTree(self):
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1473 """
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1474 Private slot to delete a directory and all its subdirectories
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1475 recursively.
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1476 """
9767
2eed840795c0 Fixed a few issues in the MicroPython file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1477 if self.__repl.deviceSupportsLocalFileAccess():
7130
6014d37d9683 Started to prepare the MicroPython file manager to access the device file system via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7126
diff changeset
1478 self.__deleteLocalDirectoryTree(True)
6014d37d9683 Started to prepare the MicroPython file manager to access the device file system via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7126
diff changeset
1479 else:
6014d37d9683 Started to prepare the MicroPython file manager to access the device file system via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7126
diff changeset
1480 if bool(len(self.deviceFileTreeWidget.selectedItems())):
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1481 dirname = self.deviceFileTreeWidget.selectedItems()[0].data(
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1482 0, Qt.ItemDataRole.UserRole
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1483 )
7130
6014d37d9683 Started to prepare the MicroPython file manager to access the device file system via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7126
diff changeset
1484 dlg = DeleteFilesConfirmationDialog(
6014d37d9683 Started to prepare the MicroPython file manager to access the device file system via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7126
diff changeset
1485 self,
6014d37d9683 Started to prepare the MicroPython file manager to access the device file system via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7126
diff changeset
1486 self.tr("Delete Directory Tree"),
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1487 self.tr("Do you really want to delete this directory tree?"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1488 [dirname],
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1489 )
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8067
diff changeset
1490 if dlg.exec() == QDialog.DialogCode.Accepted:
7130
6014d37d9683 Started to prepare the MicroPython file manager to access the device file system via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7126
diff changeset
1491 self.__fileManager.rmdir(dirname, recursive=True)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1492
7082
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1493 @pyqtSlot()
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1494 def __deleteDeviceFile(self):
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1495 """
7084
3eddfc540614 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7083
diff changeset
1496 Private slot to delete a file.
7082
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1497 """
9767
2eed840795c0 Fixed a few issues in the MicroPython file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1498 if self.__repl.deviceSupportsLocalFileAccess():
7131
f75e990caf99 MicroPythonFileManager: finished the file access via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7130
diff changeset
1499 self.__deleteLocalFile(True)
f75e990caf99 MicroPythonFileManager: finished the file access via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7130
diff changeset
1500 else:
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1501 if bool(self.deviceFileTreeWidget.selectedItems()):
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1502 filename = self.deviceFileTreeWidget.selectedItems()[0].data(
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1503 0, Qt.ItemDataRole.UserRole
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1504 )
7131
f75e990caf99 MicroPythonFileManager: finished the file access via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7130
diff changeset
1505 dlg = DeleteFilesConfirmationDialog(
f75e990caf99 MicroPythonFileManager: finished the file access via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7130
diff changeset
1506 self,
f75e990caf99 MicroPythonFileManager: finished the file access via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7130
diff changeset
1507 self.tr("Delete File"),
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1508 self.tr("Do you really want to delete this file?"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1509 [filename],
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1510 )
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8067
diff changeset
1511 if dlg.exec() == QDialog.DialogCode.Accepted:
7131
f75e990caf99 MicroPythonFileManager: finished the file access via a local directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7130
diff changeset
1512 self.__fileManager.delete(filename)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1513
10515
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
1514 @pyqtSlot()
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
1515 def __renameDeviceFile(self):
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
1516 """
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
1517 Private slot to rename a file on the device.
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
1518 """
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
1519 if self.__repl.deviceSupportsLocalFileAccess():
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
1520 self.__renameLocalFile(True)
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
1521 else:
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1522 if bool(self.deviceFileTreeWidget.selectedItems()):
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1523 filename = self.deviceFileTreeWidget.selectedItems()[0].data(
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1524 0, Qt.ItemDataRole.UserRole
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1525 )
10515
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
1526 newname, ok = QInputDialog.getText(
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
1527 self,
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
1528 self.tr("Rename File"),
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
1529 self.tr("Enter the new path for the file"),
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
1530 QLineEdit.EchoMode.Normal,
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
1531 filename,
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
1532 )
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
1533 if ok and newname:
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
1534 success = self.__fileManager.rename(filename, newname)
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
1535 if success:
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
1536 self.on_deviceReloadButton_clicked()
6e790462348a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10512
diff changeset
1537
7137
4ed2573947ff MicroPythonFileManagerWidget: added option to show hidden files to the local and device files list context menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7134
diff changeset
1538 @pyqtSlot(bool)
4ed2573947ff MicroPythonFileManagerWidget: added option to show hidden files to the local and device files list context menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7134
diff changeset
1539 def __deviceHiddenChanged(self, checked):
4ed2573947ff MicroPythonFileManagerWidget: added option to show hidden files to the local and device files list context menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7134
diff changeset
1540 """
4ed2573947ff MicroPythonFileManagerWidget: added option to show hidden files to the local and device files list context menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7134
diff changeset
1541 Private slot handling a change of the device show hidden menu entry.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1542
7137
4ed2573947ff MicroPythonFileManagerWidget: added option to show hidden files to the local and device files list context menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7134
diff changeset
1543 @param checked new check state of the action
4ed2573947ff MicroPythonFileManagerWidget: added option to show hidden files to the local and device files list context menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7134
diff changeset
1544 @type bool
4ed2573947ff MicroPythonFileManagerWidget: added option to show hidden files to the local and device files list context menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7134
diff changeset
1545 """
4ed2573947ff MicroPythonFileManagerWidget: added option to show hidden files to the local and device files list context menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7134
diff changeset
1546 Preferences.setMicroPython("ShowHiddenDevice", checked)
4ed2573947ff MicroPythonFileManagerWidget: added option to show hidden files to the local and device files list context menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7134
diff changeset
1547 self.on_deviceReloadButton_clicked()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1548
7082
ec199ef0cfc6 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7081
diff changeset
1549 @pyqtSlot()
7088
e29b0ee86b29 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7084
diff changeset
1550 def __showFileSystemInfo(self):
e29b0ee86b29 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7084
diff changeset
1551 """
e29b0ee86b29 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7084
diff changeset
1552 Private slot to show some file system information.
e29b0ee86b29 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7084
diff changeset
1553 """
e29b0ee86b29 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7084
diff changeset
1554 self.__fileManager.fileSystemInfo()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1555
7088
e29b0ee86b29 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7084
diff changeset
1556 @pyqtSlot(tuple)
7108
4f6133a01c6a Started rearranging menu structure and testing and fixing on CircuitPython.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7095
diff changeset
1557 def __fsInfoResultReceived(self, fsinfo):
7088
e29b0ee86b29 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7084
diff changeset
1558 """
7108
4f6133a01c6a Started rearranging menu structure and testing and fixing on CircuitPython.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7095
diff changeset
1559 Private slot to show the file system information of the device.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1560
7088
e29b0ee86b29 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7084
diff changeset
1561 @param fsinfo tuple of tuples containing the file system name, the
e29b0ee86b29 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7084
diff changeset
1562 total size, the used size and the free size
e29b0ee86b29 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7084
diff changeset
1563 @type tuple of tuples of (str, int, int, int)
e29b0ee86b29 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7084
diff changeset
1564 """
e29b0ee86b29 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7084
diff changeset
1565 msg = self.tr("<h3>Filesystem Information</h3>")
9959
8ca27cc20953 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9905
diff changeset
1566 if fsinfo:
8ca27cc20953 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9905
diff changeset
1567 for name, totalSize, usedSize, freeSize in fsinfo:
8ca27cc20953 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9905
diff changeset
1568 msg += self.tr(
8ca27cc20953 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9905
diff changeset
1569 "<h4>{0}</h4"
8ca27cc20953 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9905
diff changeset
1570 "<table>"
8ca27cc20953 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9905
diff changeset
1571 "<tr><td>Total Size: </td><td align='right'>{1}</td></tr>"
8ca27cc20953 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9905
diff changeset
1572 "<tr><td>Used Size: </td><td align='right'>{2}</td></tr>"
8ca27cc20953 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9905
diff changeset
1573 "<tr><td>Free Size: </td><td align='right'>{3}</td></tr>"
8ca27cc20953 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9905
diff changeset
1574 "</table>"
8ca27cc20953 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9905
diff changeset
1575 ).format(
8ca27cc20953 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9905
diff changeset
1576 name,
10806
2f6df822e3b9 Moved some functions to the EricUtilities package for consistency and adapted the code base accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10690
diff changeset
1577 EricUtilities.dataString(totalSize),
2f6df822e3b9 Moved some functions to the EricUtilities package for consistency and adapted the code base accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10690
diff changeset
1578 EricUtilities.dataString(usedSize),
2f6df822e3b9 Moved some functions to the EricUtilities package for consistency and adapted the code base accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10690
diff changeset
1579 EricUtilities.dataString(freeSize),
9959
8ca27cc20953 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9905
diff changeset
1580 )
8ca27cc20953 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9905
diff changeset
1581 else:
7088
e29b0ee86b29 MicroPython: continued implementing the file manager widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7084
diff changeset
1582 msg += self.tr(
9959
8ca27cc20953 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9905
diff changeset
1583 "<p>No file systems or file system information available.</p>"
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1584 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
1585 EricMessageBox.information(self, self.tr("Filesystem Information"), msg)
10523
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1586
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1587 @pyqtSlot()
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1588 def __clearDeviceSelection(self):
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1589 """
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1590 Private slot to clear the local selection.
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1591 """
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1592 for item in self.deviceFileTreeWidget.selectedItems()[:]:
e4069ddd7dc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
1593 item.setSelected(False)
10911
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1594
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1595 ############################################################################
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1596 ## Methods for the MicroPython window variant.
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1597 ############################################################################
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1598
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1599 @pyqtSlot()
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1600 def __newLocalFile(self, localDevice=False):
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1601 """
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1602 Private slot to create a new local file.
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1603
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1604 @param localDevice flag indicating device access via local file system
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1605 @type bool
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1606 """
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1607 cwdWidget = self.deviceCwd if localDevice else self.localCwd
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1608 fileTreeWidget = (
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1609 self.deviceFileTreeWidget if localDevice else self.localFileTreeWidget
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1610 )
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1611
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1612 if fileTreeWidget.selectedItems():
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1613 localItem = fileTreeWidget.selectedItems()[0]
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1614 defaultPath = localItem.data(0, Qt.ItemDataRole.UserRole)
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1615 if not os.path.isdir(defaultPath):
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1616 defaultPath = os.path.dirname(defaultPath)
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1617 localItem = localItem.parent()
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1618 else:
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1619 defaultPath = cwdWidget.text()
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1620 localItem = None
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1621
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1622 filePath, ok = QInputDialog.getText(
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1623 self,
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1624 self.tr("New File"),
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1625 self.tr("Enter file name:"),
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1626 QLineEdit.EchoMode.Normal,
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1627 )
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1628 if ok and filePath:
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1629 filePath = os.path.join(defaultPath, filePath)
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1630 try:
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1631 with open(filePath, "w") as f:
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1632 f.close()
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1633 if localItem:
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1634 self.__listLocalFiles(localDevice=localDevice, parentItem=localItem)
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1635 else:
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1636 self.__listLocalFiles(
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1637 dirname=cwdWidget.text(), localDevice=localDevice
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1638 )
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1639 except OSError as exc:
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1640 EricMessageBox.critical(
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1641 self,
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1642 self.tr("New File"),
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1643 self.tr(
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1644 """<p>The file <b>{0}</b> could not be"""
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1645 """ created.</p><p>Reason: {1}</p>"""
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1646 ).format(filePath, str(exc)),
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1647 )
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1648
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1649 @pyqtSlot()
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1650 def __openLocalFile(self):
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1651 """
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1652 Private slot to open the selected local file in an editor window.
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1653 """
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1654 self.on_localFileTreeWidget_itemActivated(
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1655 self.localFileTreeWidget.selectedItems()[0], 0
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1656 )
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1657
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1658 @pyqtSlot()
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1659 def __newDeviceFile(self):
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1660 """
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1661 Private slot to create a new file on the connected device.
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1662 """
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1663 if self.__repl.deviceSupportsLocalFileAccess():
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1664 self.__newLocalFile(True)
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1665 else:
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1666 selectedItems = self.deviceFileTreeWidget.selectedItems()
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1667 if selectedItems:
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1668 item = selectedItems[0]
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1669 defaultPath = (
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1670 item.data(0, Qt.ItemDataRole.UserRole)
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1671 if item.text(0).endswith("/")
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1672 else os.path.dirname(item.data(0, Qt.ItemDataRole.UserRole))
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1673 )
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1674 else:
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1675 defaultPath = self.deviceCwd.text()
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1676 fileName, ok = QInputDialog.getText(
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1677 self,
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1678 self.tr("New File"),
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1679 self.tr("Enter file name:"),
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1680 QLineEdit.EchoMode.Normal,
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1681 defaultPath,
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1682 )
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1683 if ok and fileName:
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1684 self.__fileManager.writeFile(fileName, "")
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1685
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1686 @pyqtSlot()
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1687 def __openDeviceFile(self):
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1688 """
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1689 Private slot to open the selected device file in an editor window.
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1690 """
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1691 self.on_deviceFileTreeWidget_itemActivated(
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1692 self.deviceFileTreeWidget.selectedItems()[0], 0
9cccac01156f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10898
diff changeset
1693 )

eric ide

mercurial