src/eric7/Graphics/PackageDiagramBuilder.py

branch
server
changeset 10583
2114cc7275e8
parent 10439
21c28b0f9e41
child 10585
83e5a9a64543
diff -r 8264ea1f42e5 -r 2114cc7275e8 src/eric7/Graphics/PackageDiagramBuilder.py
--- a/src/eric7/Graphics/PackageDiagramBuilder.py	Sat Feb 17 11:26:37 2024 +0100
+++ b/src/eric7/Graphics/PackageDiagramBuilder.py	Sat Feb 17 19:46:33 2024 +0100
@@ -16,6 +16,7 @@
 from PyQt6.QtWidgets import QApplication, QGraphicsTextItem
 
 from eric7 import Globals, Preferences
+from eric7.EricWidgets.EricApplication import ericApp
 from eric7.EricWidgets.EricProgressDialog import EricProgressDialog
 from eric7.SystemUtilities import FileSystemUtilities
 
@@ -45,7 +46,10 @@
         super().__init__(dialog, view, project)
         self.setObjectName("PackageDiagram")
 
-        self.package = os.path.abspath(package)
+        if FileSystemUtilities.isRemoteFileName(package):
+            self.package = package
+        else:
+            self.package = os.path.abspath(package)
         self.noAttrs = noAttrs
 
         self.__relPackage = (
@@ -54,6 +58,10 @@
             else ""
         )
 
+        self.__remotefsInterface = (
+            ericApp().getObject("EricServer").getServiceInterface("FileSystem")
+        )
+
     def initialize(self):
         """
         Public method to initialize the object.
@@ -97,9 +105,19 @@
         moduleDict = {}
         modules = []
         for ext in supportedExt:
-            modules.extend(
-                glob.glob(FileSystemUtilities.normjoinpath(self.package, ext))
-            )
+            if FileSystemUtilities.isRemoteFileName(self.package):
+                modules.extend(
+                    [
+                        FileSystemUtilities.remoteFileName(f)
+                        for f in self.__remotefsInterface.glob(
+                            os.path.join(self.package, ext)
+                        )
+                    ]
+                )
+            else:
+                modules.extend(
+                    glob.glob(FileSystemUtilities.normjoinpath(self.package, ext))
+                )
         tot = len(modules)
         progress = EricProgressDialog(
             self.tr("Parsing modules..."),
@@ -154,14 +172,29 @@
         subpackagesDict = {}
         subpackagesList = []
 
-        with os.scandir(self.package) as dirEntriesIterator:
-            for subpackage in dirEntriesIterator:
+        if FileSystemUtilities.isRemoteFileName(self.package):
+            for subpackage in self.__remotefsInterface.listdir(self.package)[2]:
                 if (
-                    subpackage.is_dir()
-                    and subpackage.name != "__pycache__"
-                    and len(glob.glob(os.path.join(subpackage.path, "__init__.*"))) != 0
+                    subpackage["is_dir"]
+                    and subpackage["name"] != "__pycache__"
+                    and len(
+                        self.__remotefsInterface.glob(
+                            os.path.join(subpackage["path"], "__init__.*")
+                        )
+                    ) != 0
                 ):
-                    subpackagesList.append(subpackage.path)
+                    subpackagesList.append(
+                        FileSystemUtilities.remoteFileName(subpackage["path"])
+                    )
+        else:
+            with os.scandir(self.package) as dirEntriesIterator:
+                for subpackage in dirEntriesIterator:
+                    if (
+                        subpackage.is_dir()
+                        and subpackage.name != "__pycache__"
+                        and len(glob.glob(os.path.join(subpackage.path, "__init__.*"))) != 0
+                    ):
+                        subpackagesList.append(subpackage.path)
 
         tot = 0
         for ext in supportedExt:
@@ -187,9 +220,19 @@
                 subpackagesDict[packageName] = []
                 modules = []
                 for ext in supportedExt:
-                    modules.extend(
-                        glob.glob(FileSystemUtilities.normjoinpath(subpackage, ext))
-                    )
+                    if FileSystemUtilities.isRemoteFileName(subpackage):
+                        modules.extend(
+                            [
+                                FileSystemUtilities.remoteFileName(f)
+                                for f in self.__remotefsInterface.glob(
+                                    os.path.join(subpackage, ext)
+                                )
+                            ]
+                        )
+                    else:
+                        modules.extend(
+                            glob.glob(FileSystemUtilities.normjoinpath(subpackage, ext))
+                        )
                 for prog, module in enumerate(modules, start=start):
                     progress.setValue(prog)
                     if time.monotonic() - now > 0.01:
@@ -225,7 +268,11 @@
         """
         self.allClasses = {}
 
-        initlist = glob.glob(os.path.join(self.package, "__init__.*"))
+        globPattern = os.path.join(self.package, "__init__.*")
+        if FileSystemUtilities.isRemoteFileName(self.package):
+            initlist = self.__remotefsInterface.glob(globPattern)
+        else:
+            initlist = glob.glob(globPattern)
         if len(initlist) == 0:
             ct = QGraphicsTextItem(None)
             self.scene.addItem(ct)

eric ide

mercurial