eric6/MicroPython/PyBoardDevices.py

changeset 8062
8dc5acb30a8b
parent 7923
91e843545d9a
child 8067
a467ab075be0
--- a/eric6/MicroPython/PyBoardDevices.py	Wed Feb 03 19:14:35 2021 +0100
+++ b/eric6/MicroPython/PyBoardDevices.py	Wed Feb 03 19:15:58 2021 +0100
@@ -43,6 +43,8 @@
         @type QObject
         """
         super(PyBoardDevice, self).__init__(microPythonWidget, parent)
+        
+        self.__workspace = self.__findWorkspace()
     
     def setButtons(self):
         """
@@ -140,7 +142,7 @@
         @return flag indicated a mounted device
         @rtype bool
         """
-        return self.getWorkspace(silent=True).endswith(self.DeviceVolumeName)
+        return self.DeviceVolumeName in self.getWorkspace(silent=True)
     
     def getWorkspace(self, silent=False):
         """
@@ -151,12 +153,32 @@
         @return workspace directory used for saving files
         @rtype str
         """
+        if self.__workspace:
+            # return cached entry
+            return self.__workspace
+        else:
+            self.__workspace = self.__findWorkspace(silent=silent)
+            return self.__workspace
+    
+    def __findWorkspace(self, silent=False):
+        """
+        Public method to find the workspace directory.
+        
+        @param silent flag indicating silent operations
+        @type bool
+        @return workspace directory used for saving files
+        @rtype str
+        """
         # Attempts to find the path on the filesystem that represents the
         # plugged in PyBoard board.
-        deviceDirectory = Utilities.findVolume(self.DeviceVolumeName)
+        deviceDirectories = Utilities.findVolume(self.DeviceVolumeName,
+                                                 all=True)
         
-        if deviceDirectory:
-            return deviceDirectory
+        if deviceDirectories:
+            if len(deviceDirectories) == 1:
+                return deviceDirectories[0]
+            else:
+                return self.selectDeviceDirectory(deviceDirectories)
         else:
             # return the default workspace and give the user a warning (unless
             # silent mode is selected)

eric ide

mercurial