src/eric7/RemoteServerInterface/EricServerFileSystemInterface.py

Mon, 19 Feb 2024 15:33:33 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Mon, 19 Feb 2024 15:33:33 +0100
branch
server
changeset 10589
75b656c80a40
parent 10585
83e5a9a64543
child 10596
ea35c92a3c7c
permissions
-rw-r--r--

Added methods to read and write files with a given encoding to the eric-ide server file system interface and adapted the code accordingly.

10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
3 # Copyright (c) 2024 Detlev Offenbach <detlev@die-offenbachs.de>
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing the file system interface to the eric-ide server.
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
10546
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
10 import base64
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11 import contextlib
10583
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
12 import os
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
13 import re
10576
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
14 import stat
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15
10584
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
16 from PyQt6.QtCore import QEventLoop, QObject, pyqtSlot
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17
10589
75b656c80a40 Added methods to read and write files with a given encoding to the eric-ide server file system interface and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10585
diff changeset
18 from eric7 import Utilities
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19 from eric7.RemoteServer.EricRequestCategory import EricRequestCategory
10574
622e59b51640 Implemented the profiling and code coverage interface of the dialogs to the eric-ide server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10561
diff changeset
20 from eric7.SystemUtilities import FileSystemUtilities
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 class EricServerFileSystemInterface(QObject):
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 Class implementing the file system interface to the eric-ide server.
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27
10583
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
28 _MagicCheck = re.compile("([*?[])")
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
29
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 def __init__(self, serverInterface):
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 Constructor
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 @param serverInterface reference to the eric-ide server interface
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 @type EricServerInterface
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 super().__init__(parent=serverInterface)
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 self.__serverInterface = serverInterface
10584
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
40 self.__serverInterface.connectionStateChanged.connect(
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
41 self.__connectionStateChanged
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
42 )
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
43
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
44 self.__serverPathSep = self.__getPathSep()
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45
10583
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
46 def __hasMagic(self, pathname):
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
47 """
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
48 Private method to check, if a given path contains glob style magic characters.
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
49
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
50 Note: This was taken from 'glob.glob'.
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
51
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
52 @param pathname path name to be checked
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
53 @type str
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
54 @return flag indicating the presence of magic characters
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
55 @rtype bool
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
56 """
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
57 match = self._MagicCheck.search(pathname)
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
58 return match is not None
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
59
10584
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
60 @pyqtSlot(bool)
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
61 def __connectionStateChanged(self, connected):
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
62 """
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
63 Private slot handling a change of the server connection state.
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
64
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
65 @param connected flag indicating a connected state
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
66 @type bool
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
67 """
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
68 if connected:
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
69 if not bool(self.__serverPathSep):
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
70 self.__serverPathSep = self.__getPathSep()
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
71 else:
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
72 self.__serverPathSep = ""
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
73
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
74 def __getPathSep(self):
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
75 """
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
76 Private method to get the path separator of the connected server.
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
77 """
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
78 loop = QEventLoop()
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
79 sep = ""
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
80
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
81 def callback(reply, params):
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
82 """
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
83 Function to handle the server reply
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
84
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
85 @param reply name of the server reply
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
86 @type str
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
87 @param params dictionary containing the reply data
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
88 @type dict
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
89 """
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
90 nonlocal sep
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
91
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
92 if reply == "GetPathSep":
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
93 sep = params["separator"]
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
94 loop.quit()
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
95
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
96 if self.__serverInterface.isServerConnected():
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
97 self.__serverInterface.sendJson(
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
98 category=EricRequestCategory.FileSystem,
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
99 request="GetPathSep",
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
100 params={},
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
101 callback=callback,
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
102 )
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
103
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
104 loop.exec()
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
105
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
106 return sep
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
107
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 def getcwd(self):
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 Public method to get the current working directory of the eric-ide server.
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 @return current working directory of the eric-ide server
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 @rtype str
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 loop = QEventLoop()
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 cwd = ""
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118 def callback(reply, params):
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 Function to handle the server reply
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 @param reply name of the server reply
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123 @type str
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124 @param params dictionary containing the reply data
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
125 @type dict
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127 nonlocal cwd
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129 if reply == "Getcwd":
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130 cwd = params["directory"]
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131 loop.quit()
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132
10577
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
133 if self.__serverInterface.isServerConnected():
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
134 self.__serverInterface.sendJson(
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
135 category=EricRequestCategory.FileSystem,
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
136 request="Getcwd",
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
137 params={},
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
138 callback=callback,
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
139 )
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140
10577
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
141 loop.exec()
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
142
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143 return cwd
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145 def chdir(self, directory):
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147 Public method to change the current working directory of the eric-ide server.
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 @param directory absolute path of the working directory to change to
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150 @type str
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 @return tuple containing an OK flag and an error string in case of an issue
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152 @rtype tuple of (bool, str)
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
154 loop = QEventLoop()
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155 ok = False
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156 error = ""
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158 def callback(reply, params):
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160 Function to handle the server reply
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162 @param reply name of the server reply
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163 @type str
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
164 @param params dictionary containing the reply data
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
165 @type dict
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
166 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167 nonlocal ok, error
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
168
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
169 if reply == "Chdir":
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
170 ok = params["ok"]
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
171 with contextlib.suppress(KeyError):
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
172 error = params["error"]
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
173 loop.quit()
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
174
10577
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
175 if self.__serverInterface.isServerConnected():
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
176 self.__serverInterface.sendJson(
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
177 category=EricRequestCategory.FileSystem,
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
178 request="Chdir",
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
179 params={"directory": FileSystemUtilities.plainFileName(directory)},
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
180 callback=callback,
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
181 )
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182
10577
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
183 loop.exec()
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
184 return ok, error
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
185
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
186 else:
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
187 return False, "Not connected to an 'eric-ide' server."
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
188
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189 def listdir(self, directory=""):
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
190 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
191 Public method to get a directory listing.
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
192
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
193 @param directory directory to be listed. An empty directory means to list
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
194 the eric-ide server current directory. (defaults to "")
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
195 @type str (optional)
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
196 @return tuple containing the listed directory, the path separartor and the
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
197 directory listing. Each directory listing entry contains a dictionary
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
198 with the relevant data.
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
199 @rtype tuple of (str, str, dict)
10548
d3e21f44887b Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10546
diff changeset
200 @exception OSError raised in case the server reported an issue
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
201 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
202 if directory is None:
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
203 # sanitize the directory in case it is None
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
204 directory = ""
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
205
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
206 loop = QEventLoop()
10548
d3e21f44887b Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10546
diff changeset
207 ok = False
d3e21f44887b Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10546
diff changeset
208 error = ""
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
209 listedDirectory = ""
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
210 separator = ""
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
211 listing = []
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
212
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
213 def callback(reply, params):
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
214 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
215 Function to handle the server reply
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
216
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
217 @param reply name of the server reply
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
218 @type str
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
219 @param params dictionary containing the reply data
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
220 @type dict
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
221 """
10548
d3e21f44887b Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10546
diff changeset
222 nonlocal listedDirectory, listing, separator, ok, error
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
223
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
224 if reply == "Listdir":
10548
d3e21f44887b Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10546
diff changeset
225 ok = params["ok"]
d3e21f44887b Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10546
diff changeset
226 if ok:
d3e21f44887b Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10546
diff changeset
227 listedDirectory = params["directory"]
d3e21f44887b Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10546
diff changeset
228 listing = params["listing"]
d3e21f44887b Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10546
diff changeset
229 separator = params["separator"]
d3e21f44887b Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10546
diff changeset
230 else:
d3e21f44887b Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10546
diff changeset
231 error = params["error"]
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
232 loop.quit()
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
233
10577
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
234 if self.__serverInterface.isServerConnected():
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
235 self.__serverInterface.sendJson(
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
236 category=EricRequestCategory.FileSystem,
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
237 request="Listdir",
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
238 params={"directory": FileSystemUtilities.plainFileName(directory)},
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
239 callback=callback,
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
240 )
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
241
10577
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
242 loop.exec()
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
243 if not ok:
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
244 raise OSError(error)
10548
d3e21f44887b Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10546
diff changeset
245
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
246 return listedDirectory, separator, listing
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
247
10576
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
248 def direntries(
10583
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
249 self,
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
250 directory,
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
251 filesonly=False,
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
252 pattern=None,
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
253 followsymlinks=True,
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
254 ignore=None,
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
255 recursive=True,
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
256 dirsonly=False,
10576
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
257 ):
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
258 """
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
259 Public method to get a list of all files and directories of a given directory.
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
260
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
261 @param directory root of the tree to check
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
262 @type str
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
263 @param filesonly flag indicating that only files are wanted (defaults to False)
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
264 @type bool (optional)
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
265 @param pattern a filename pattern or list of filename patterns to check
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
266 against (defaults to None)
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
267 @type str or list of str (optional)
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
268 @param followsymlinks flag indicating whether symbolic links should be
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
269 followed (defaults to True)
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
270 @type bool (optional)
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
271 @param ignore list of entries to be ignored (defaults to None)
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
272 @type list of str (optional)
10583
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
273 @param recursive flag indicating a recursive search (defaults to True)
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
274 @type bool (optional)
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
275 @param dirsonly flag indicating to return only directories. When True it has
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
276 precedence over the 'filesonly' parameter ((defaults to False)
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
277 @type bool
10576
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
278 @return list of all files and directories in the tree rooted at path.
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
279 The names are expanded to start with the given directory name.
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
280 @rtype list of str
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
281 @exception OSError raised in case the server reported an issue
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
282 """
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
283 loop = QEventLoop()
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
284 ok = False
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
285 error = ""
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
286 result = []
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
287
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
288 def callback(reply, params):
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
289 """
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
290 Function to handle the server reply
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
291
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
292 @param reply name of the server reply
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
293 @type str
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
294 @param params dictionary containing the reply data
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
295 @type dict
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
296 """
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
297 nonlocal result, ok, error
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
298
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
299 if reply == "DirEntries":
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
300 ok = params["ok"]
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
301 if ok:
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
302 result = params["result"]
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
303 else:
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
304 error = params["error"]
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
305 loop.quit()
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
306
10577
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
307 if self.__serverInterface.isServerConnected():
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
308 self.__serverInterface.sendJson(
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
309 category=EricRequestCategory.FileSystem,
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
310 request="DirEntries",
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
311 params={
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
312 "directory": FileSystemUtilities.plainFileName(directory),
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
313 "files_only": filesonly,
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
314 "pattern": [] if pattern is None else pattern,
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
315 "follow_symlinks": followsymlinks,
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
316 "ignore": [] if ignore is None else ignore,
10583
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
317 "recursive": recursive,
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
318 "dirs_only": dirsonly,
10577
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
319 },
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
320 callback=callback,
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
321 )
10576
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
322
10577
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
323 loop.exec()
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
324 if not ok:
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
325 raise OSError(error)
10576
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
326
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
327 return result
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
328
10583
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
329 def glob(self, pathname, recursive=False, includeHidden=False):
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
330 """
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
331 Public method to get a list of of all files matching a given pattern
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
332 like 'glob.glob()'.
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
333
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
334 @param pathname path name pattern with simple shell-style wildcards
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
335 @type str
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
336 @param recursive flag indicating a recursive list (defaults to False)
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
337 @type bool (optional)
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
338 @param includeHidden flag indicating to include hidden files (defaults to False)
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
339 @type bool (optional)
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
340 @return list of all files matching the pattern
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
341 @rtype list of str
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
342 """
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
343 result = []
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
344
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
345 pathname = FileSystemUtilities.plainFileName(pathname)
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
346 dirname, basename = os.path.split(pathname)
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
347 if dirname and not self.__hasMagic(dirname):
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
348 with contextlib.suppress(OSError):
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
349 entries = self.direntries(
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
350 dirname, pattern=basename, recursive=recursive, filesonly=True
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
351 )
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
352 if includeHidden:
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
353 result = entries
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
354 else:
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
355 result = [e for e in entries if not e.startswith(".")]
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
356
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
357 return result
2114cc7275e8 Adapted the UML Class diagram and the Package diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10577
diff changeset
358
10546
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
359 def stat(self, filename, stNames):
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
360 """
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
361 Public method to get the status of a file.
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
362
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
363 @param filename name of the file
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
364 @type str
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
365 @param stNames list of 'stat_result' members to retrieve
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
366 @type list of str
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
367 @return dictionary containing the requested status data
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
368 @rtype dict
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
369 @exception OSError raised in case the server reported an issue
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
370 """
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
371 loop = QEventLoop()
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
372 ok = False
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
373 error = ""
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
374 stResult = {}
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
375
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
376 def callback(reply, params):
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
377 """
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
378 Function to handle the server reply
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
379
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
380 @param reply name of the server reply
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
381 @type str
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
382 @param params dictionary containing the reply data
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
383 @type dict
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
384 """
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
385 nonlocal ok, error, stResult
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
386
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
387 if reply == "Stat":
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
388 ok = params["ok"]
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
389 if ok:
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
390 stResult = params["result"]
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
391 else:
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
392 error = params["error"]
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
393 loop.quit()
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
394
10577
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
395 if self.__serverInterface.isServerConnected():
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
396 self.__serverInterface.sendJson(
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
397 category=EricRequestCategory.FileSystem,
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
398 request="Stat",
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
399 params={
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
400 "filename": FileSystemUtilities.plainFileName(filename),
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
401 "st_names": stNames,
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
402 },
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
403 callback=callback,
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
404 )
10546
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
405
10577
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
406 loop.exec()
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
407 if not ok:
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
408 raise OSError(error)
10546
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
409
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
410 return stResult
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
411
10576
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
412 def isdir(self, name):
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
413 """
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
414 Public method to check, if the given name is a directory.
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
415
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
416 @param name name to be checked
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
417 @type str
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
418 @return flag indicating a directory
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
419 @rtype bool
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
420 """
10577
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
421 with contextlib.suppress(KeyError, OSError):
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
422 result = self.stat(name, ["st_mode"])
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
423 return stat.S_ISDIR(result["st_mode"])
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
424
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
425 return False
10576
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
426
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
427 def isfile(self, name):
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
428 """
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
429 Public method to check, if the given name is a regular file.
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
430
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
431 @param name name to be checked
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
432 @type str
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
433 @return flag indicating a regular file
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
434 @rtype bool
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
435 """
10577
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
436 with contextlib.suppress(KeyError, OSError):
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
437 result = self.stat(name, ["st_mode"])
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
438 return stat.S_ISREG(result["st_mode"])
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
439
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
440 return False
10576
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
441
10546
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
442 def exists(self, name):
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
443 """
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
444 Public method the existence of a file or directory.
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
445
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
446 @param name name of the file or directory
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
447 @type str
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
448 @return flag indicating the file existence
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
449 @rtype bool
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
450 """
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
451 loop = QEventLoop()
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
452 nameExists = False
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
453
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
454 def callback(reply, params):
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
455 """
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
456 Function to handle the server reply
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
457
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
458 @param reply name of the server reply
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
459 @type str
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
460 @param params dictionary containing the reply data
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
461 @type dict
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
462 """
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
463 nonlocal nameExists
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
464
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
465 if reply == "Exists":
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
466 nameExists = params["exists"]
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
467 loop.quit()
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
468
10577
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
469 if self.__serverInterface.isServerConnected():
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
470 self.__serverInterface.sendJson(
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
471 category=EricRequestCategory.FileSystem,
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
472 request="Exists",
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
473 params={"name": FileSystemUtilities.plainFileName(name)},
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
474 callback=callback,
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
475 )
10546
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
476
10577
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
477 loop.exec()
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
478
10546
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
479 return nameExists
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
480
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
481 def access(self, name, modes):
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
482 """
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
483 Public method to test the given access rights to a file or directory.
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
484
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
485 The modes to check for are 'read', 'write' or 'execute' or any combination.
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
486
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
487 @param name name of the file or directory
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
488 @type str
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
489 @param modes list of modes to check for
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
490 @type str or list of str
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
491 @return flag indicating the user has the asked for permissions
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
492 @rtype bool
10561
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
493 @exception ValueError raised for an illegal modes list
10546
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
494 """
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
495 if not modes:
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
496 raise ValueError(
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
497 "At least one of 'read', 'write' or 'execute' must be specified."
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
498 )
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
499
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
500 if isinstance(modes, str):
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
501 # convert to a list with one element
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
502 modes = [modes]
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
503
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
504 loop = QEventLoop()
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
505 accessOK = False
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
506
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
507 def callback(reply, params):
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
508 """
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
509 Function to handle the server reply
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
510
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
511 @param reply name of the server reply
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
512 @type str
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
513 @param params dictionary containing the reply data
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
514 @type dict
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
515 """
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
516 nonlocal accessOK
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
517
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
518 if reply == "Access":
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
519 accessOK = params["ok"]
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
520 loop.quit()
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
521
10577
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
522 if self.__serverInterface.isServerConnected():
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
523 self.__serverInterface.sendJson(
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
524 category=EricRequestCategory.FileSystem,
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
525 request="Access",
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
526 params={
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
527 "name": FileSystemUtilities.plainFileName(name),
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
528 "modes": modes,
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
529 },
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
530 callback=callback,
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
531 )
10546
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
532
10577
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
533 loop.exec()
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
534
10546
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
535 return accessOK
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
536
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
537 def mkdir(self, directory):
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
538 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
539 Public method to create a new directory on the eric-ide server.
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
540
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
541 @param directory absolute path of the new directory
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
542 @type str
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
543 @return tuple containing an OK flag and an error string in case of an issue
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
544 @rtype tuple of (bool, str)
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
545 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
546 loop = QEventLoop()
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
547 ok = False
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
548 error = ""
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
549
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
550 def callback(reply, params):
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
551 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
552 Function to handle the server reply
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
553
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
554 @param reply name of the server reply
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
555 @type str
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
556 @param params dictionary containing the reply data
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
557 @type dict
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
558 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
559 nonlocal ok, error
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
560
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
561 if reply == "Mkdir":
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
562 ok = params["ok"]
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
563 with contextlib.suppress(KeyError):
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
564 error = params["error"]
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
565 loop.quit()
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
566
10577
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
567 if self.__serverInterface.isServerConnected():
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
568 self.__serverInterface.sendJson(
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
569 category=EricRequestCategory.FileSystem,
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
570 request="Mkdir",
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
571 params={"directory": FileSystemUtilities.plainFileName(directory)},
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
572 callback=callback,
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
573 )
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
574
10577
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
575 loop.exec()
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
576 return ok, error
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
577
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
578 else:
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
579 return False, "Not connected to an 'eric-ide' server."
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
580
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
581 def rmdir(self, directory):
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
582 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
583 Public method to delete a directory on the eric-ide server.
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
584
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
585 @param directory absolute path of the directory
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
586 @type str
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
587 @return tuple containing an OK flag and an error string in case of an issue
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
588 @rtype tuple of (bool, str)
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
589 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
590 loop = QEventLoop()
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
591 ok = False
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
592 error = ""
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
593
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
594 def callback(reply, params):
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
595 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
596 Function to handle the server reply
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
597
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
598 @param reply name of the server reply
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
599 @type str
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
600 @param params dictionary containing the reply data
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
601 @type dict
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
602 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
603 nonlocal ok, error
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
604
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
605 if reply == "Rmdir":
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
606 ok = params["ok"]
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
607 with contextlib.suppress(KeyError):
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
608 error = params["error"]
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
609 loop.quit()
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
610
10577
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
611 if self.__serverInterface.isServerConnected():
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
612 self.__serverInterface.sendJson(
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
613 category=EricRequestCategory.FileSystem,
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
614 request="Rmdir",
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
615 params={"directory": FileSystemUtilities.plainFileName(directory)},
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
616 callback=callback,
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
617 )
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
618
10577
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
619 loop.exec()
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
620 return ok, error
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
621
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
622 else:
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
623 return False, "Not connected to an 'eric-ide' server."
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
624
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
625 def replace(self, oldName, newName):
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
626 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
627 Public method to rename a file or directory.
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
628
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
629 @param oldName current name of the file or directory
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
630 @type str
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
631 @param newName new name for the file or directory
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
632 @type str
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
633 @return tuple containing an OK flag and an error string in case of an issue
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
634 @rtype tuple of (bool, str)
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
635 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
636 loop = QEventLoop()
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
637 ok = False
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
638 error = ""
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
639
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
640 def callback(reply, params):
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
641 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
642 Function to handle the server reply
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
643
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
644 @param reply name of the server reply
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
645 @type str
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
646 @param params dictionary containing the reply data
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
647 @type dict
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
648 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
649 nonlocal ok, error
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
650
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
651 if reply == "Replace":
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
652 ok = params["ok"]
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
653 with contextlib.suppress(KeyError):
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
654 error = params["error"]
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
655 loop.quit()
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
656
10577
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
657 if self.__serverInterface.isServerConnected():
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
658 self.__serverInterface.sendJson(
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
659 category=EricRequestCategory.FileSystem,
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
660 request="Replace",
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
661 params={
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
662 "old_name": FileSystemUtilities.plainFileName(oldName),
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
663 "new_name": FileSystemUtilities.plainFileName(newName),
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
664 },
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
665 callback=callback,
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
666 )
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
667
10577
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
668 loop.exec()
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
669 return ok, error
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
670
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
671 else:
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
672 return False, "Not connected to an 'eric-ide' server."
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
673
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
674 def remove(self, filename):
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
675 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
676 Public method to delete a file on the eric-ide server.
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
677
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
678 @param filename absolute path of the file
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
679 @type str
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
680 @return tuple containing an OK flag and an error string in case of an issue
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
681 @rtype tuple of (bool, str)
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
682 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
683 loop = QEventLoop()
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
684 ok = False
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
685 error = ""
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
686
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
687 def callback(reply, params):
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
688 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
689 Function to handle the server reply
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
690
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
691 @param reply name of the server reply
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
692 @type str
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
693 @param params dictionary containing the reply data
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
694 @type dict
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
695 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
696 nonlocal ok, error
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
697
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
698 if reply == "Remove":
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
699 ok = params["ok"]
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
700 with contextlib.suppress(KeyError):
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
701 error = params["error"]
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
702 loop.quit()
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
703
10577
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
704 if self.__serverInterface.isServerConnected():
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
705 self.__serverInterface.sendJson(
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
706 category=EricRequestCategory.FileSystem,
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
707 request="Remove",
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
708 params={"filename": FileSystemUtilities.plainFileName(filename)},
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
709 callback=callback,
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
710 )
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
711
10577
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
712 loop.exec()
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
713 return ok, error
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
714
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
715 else:
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
716 return False, "Not connected to an 'eric-ide' server."
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
717
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
718 #######################################################################
10584
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
719 ## Methods for splitting or joining remote path names.
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
720 ##
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
721 ## These are simplified variants of the os.path functions. If the
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
722 ## 'eric-ide' server is not connected, the os.path functions are used.
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
723 #######################################################################
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
724
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
725 def separator(self):
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
726 """
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
727 Public method to return the server side path separator string.
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
728
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
729 @return path separator
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
730 @rtype str
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
731 """
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
732 return self.__serverPathSep
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
733
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
734 def join(self, a, *p):
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
735 """
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
736 Public method to join two or more path name components using the path separator
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
737 of the server side.
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
738
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
739 @param a first path component
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
740 @type str
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
741 @param *p list of additional path components
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
742 @type list of str
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
743 @return joined path name
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
744 @rtype str
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
745 """
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
746 if self.__serverInterface.isServerConnected():
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
747 path = a
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
748 for b in p:
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
749 if b.startswith(self.__serverPathSep):
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
750 path = b
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
751 elif not path or path.endswith(self.__serverPathSep):
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
752 path += b
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
753 else:
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
754 path += self.__serverPathSep + b
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
755 return path
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
756
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
757 else:
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
758 return os.path.join(a, *p)
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
759
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
760 def split(self, p):
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
761 """
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
762 Public method to split a path name.
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
763
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
764 @param p path name to be split
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
765 @type str
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
766 @return tuple containing head and tail, where tail is everything after the last
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
767 path separator.
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
768 @rtype tuple of (str, str)
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
769 """
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
770 if self.__serverInterface.isServerConnected():
10585
83e5a9a64543 Improved the remote file system interface to work with 'eric-ide' servers with a different OS than the IDE computer and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10584
diff changeset
771 if self.__serverPathSep == "\\":
83e5a9a64543 Improved the remote file system interface to work with 'eric-ide' servers with a different OS than the IDE computer and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10584
diff changeset
772 # remote is a Windows system
83e5a9a64543 Improved the remote file system interface to work with 'eric-ide' servers with a different OS than the IDE computer and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10584
diff changeset
773 normp = p.replace("/", "\\")
83e5a9a64543 Improved the remote file system interface to work with 'eric-ide' servers with a different OS than the IDE computer and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10584
diff changeset
774 else:
83e5a9a64543 Improved the remote file system interface to work with 'eric-ide' servers with a different OS than the IDE computer and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10584
diff changeset
775 # remote is a Posix system
83e5a9a64543 Improved the remote file system interface to work with 'eric-ide' servers with a different OS than the IDE computer and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10584
diff changeset
776 normp = p.replace("\\", "/")
83e5a9a64543 Improved the remote file system interface to work with 'eric-ide' servers with a different OS than the IDE computer and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10584
diff changeset
777
83e5a9a64543 Improved the remote file system interface to work with 'eric-ide' servers with a different OS than the IDE computer and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10584
diff changeset
778 i = normp.rfind(self.__serverPathSep) + 1
83e5a9a64543 Improved the remote file system interface to work with 'eric-ide' servers with a different OS than the IDE computer and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10584
diff changeset
779 head, tail = normp[:i], normp[i:]
10584
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
780 if head and head != self.__serverPathSep * len(head):
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
781 head = head.rstrip(self.__serverPathSep)
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
782 return head, tail
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
783
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
784 else:
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
785 return os.path.split(p)
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
786
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
787 def splitext(self, p):
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
788 """
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
789 Public method to split a path name into a root part and an extension.
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
790
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
791 @param p path name to be split
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
792 @type str
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
793 @return tuple containing the root part and the extension
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
794 @rtype tuple of (str, str)
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
795 """
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
796 return os.path.splitext(p)
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
797
10585
83e5a9a64543 Improved the remote file system interface to work with 'eric-ide' servers with a different OS than the IDE computer and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10584
diff changeset
798 def splitdrive(self, p):
83e5a9a64543 Improved the remote file system interface to work with 'eric-ide' servers with a different OS than the IDE computer and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10584
diff changeset
799 """
83e5a9a64543 Improved the remote file system interface to work with 'eric-ide' servers with a different OS than the IDE computer and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10584
diff changeset
800 Public method to split a path into drive and path.
83e5a9a64543 Improved the remote file system interface to work with 'eric-ide' servers with a different OS than the IDE computer and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10584
diff changeset
801
83e5a9a64543 Improved the remote file system interface to work with 'eric-ide' servers with a different OS than the IDE computer and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10584
diff changeset
802 @param p path name to be split
83e5a9a64543 Improved the remote file system interface to work with 'eric-ide' servers with a different OS than the IDE computer and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10584
diff changeset
803 @type str
83e5a9a64543 Improved the remote file system interface to work with 'eric-ide' servers with a different OS than the IDE computer and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10584
diff changeset
804 @return tuple containing the drive letter (incl. colon) and the path
83e5a9a64543 Improved the remote file system interface to work with 'eric-ide' servers with a different OS than the IDE computer and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10584
diff changeset
805 @rtype tuple of (str, str)
83e5a9a64543 Improved the remote file system interface to work with 'eric-ide' servers with a different OS than the IDE computer and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10584
diff changeset
806 """
83e5a9a64543 Improved the remote file system interface to work with 'eric-ide' servers with a different OS than the IDE computer and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10584
diff changeset
807 if self.__serverInterface.isServerConnected():
83e5a9a64543 Improved the remote file system interface to work with 'eric-ide' servers with a different OS than the IDE computer and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10584
diff changeset
808 plainp = FileSystemUtilities.plainFileName(p)
83e5a9a64543 Improved the remote file system interface to work with 'eric-ide' servers with a different OS than the IDE computer and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10584
diff changeset
809
83e5a9a64543 Improved the remote file system interface to work with 'eric-ide' servers with a different OS than the IDE computer and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10584
diff changeset
810 if self.__serverPathSep == "\\":
83e5a9a64543 Improved the remote file system interface to work with 'eric-ide' servers with a different OS than the IDE computer and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10584
diff changeset
811 # remote is a Windows system
83e5a9a64543 Improved the remote file system interface to work with 'eric-ide' servers with a different OS than the IDE computer and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10584
diff changeset
812 normp = plainp.replace("/", "\\")
83e5a9a64543 Improved the remote file system interface to work with 'eric-ide' servers with a different OS than the IDE computer and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10584
diff changeset
813 if normp[1:2] == ":":
83e5a9a64543 Improved the remote file system interface to work with 'eric-ide' servers with a different OS than the IDE computer and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10584
diff changeset
814 return normp[:2], normp[2:]
83e5a9a64543 Improved the remote file system interface to work with 'eric-ide' servers with a different OS than the IDE computer and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10584
diff changeset
815 else:
83e5a9a64543 Improved the remote file system interface to work with 'eric-ide' servers with a different OS than the IDE computer and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10584
diff changeset
816 return "", normp
83e5a9a64543 Improved the remote file system interface to work with 'eric-ide' servers with a different OS than the IDE computer and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10584
diff changeset
817 else:
83e5a9a64543 Improved the remote file system interface to work with 'eric-ide' servers with a different OS than the IDE computer and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10584
diff changeset
818 # remote is a Posix system
83e5a9a64543 Improved the remote file system interface to work with 'eric-ide' servers with a different OS than the IDE computer and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10584
diff changeset
819 normp = plainp.replace("\\", "/")
83e5a9a64543 Improved the remote file system interface to work with 'eric-ide' servers with a different OS than the IDE computer and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10584
diff changeset
820 return "", normp
83e5a9a64543 Improved the remote file system interface to work with 'eric-ide' servers with a different OS than the IDE computer and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10584
diff changeset
821
83e5a9a64543 Improved the remote file system interface to work with 'eric-ide' servers with a different OS than the IDE computer and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10584
diff changeset
822 else:
83e5a9a64543 Improved the remote file system interface to work with 'eric-ide' servers with a different OS than the IDE computer and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10584
diff changeset
823 return os.path.splitdrive(p)
83e5a9a64543 Improved the remote file system interface to work with 'eric-ide' servers with a different OS than the IDE computer and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10584
diff changeset
824
10584
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
825 def dirname(self, p):
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
826 """
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
827 Public method to extract the directory component of a path name.
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
828
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
829 @param p path name
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
830 @type str
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
831 @return directory component
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
832 @rtype str
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
833 """
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
834 return self.split(p)[0]
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
835
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
836 def basename(self, p):
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
837 """
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
838 Public method to extract the final component of a path name.
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
839
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
840 @param p path name
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
841 @type str
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
842 @return final component
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
843 @rtype str
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
844 """
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
845 return self.split(p)[1]
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
846
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
847 #######################################################################
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
848 ## Methods for reading and writing files
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
849 #######################################################################
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
850
10546
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
851 def readFile(self, filename, create=False):
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
852 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
853 Public method to read a file from the eric-ide server.
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
854
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
855 @param filename name of the file to read
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
856 @type str
10546
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
857 @param create flag indicating to create an empty file, if it does not exist
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
858 (defaults to False)
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
859 @type bool (optional)
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
860 @return bytes data read from the eric-ide server
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
861 @rtype bytes
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
862 @exception OSError raised in case the server reported an issue
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
863 """
10546
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
864 loop = QEventLoop()
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
865 ok = False
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
866 error = ""
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
867 bText = b""
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
868
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
869 def callback(reply, params):
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
870 """
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
871 Function to handle the server reply
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
872
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
873 @param reply name of the server reply
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
874 @type str
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
875 @param params dictionary containing the reply data
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
876 @type dict
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
877 """
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
878 nonlocal ok, error, bText
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
879
10546
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
880 if reply == "ReadFile":
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
881 ok = params["ok"]
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
882 if ok:
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
883 bText = base64.b85decode(
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
884 bytes(params["filedata"], encoding="ascii")
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
885 )
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
886 else:
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
887 error = params["error"]
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
888 loop.quit()
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
889
10577
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
890 if not self.__serverInterface.isServerConnected():
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
891 raise OSError("Not connected to an 'eric-ide' server.")
10546
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
892
10577
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
893 else:
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
894 self.__serverInterface.sendJson(
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
895 category=EricRequestCategory.FileSystem,
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
896 request="ReadFile",
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
897 params={
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
898 "filename": FileSystemUtilities.plainFileName(filename),
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
899 "create": create,
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
900 },
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
901 callback=callback,
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
902 )
10546
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
903
10577
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
904 loop.exec()
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
905 if not ok:
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
906 raise OSError(error)
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
907
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
908 return bText
10546
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
909
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
910 def writeFile(self, filename, data, withBackup=False):
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
911 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
912 Public method to write the data to a file on the eric-ide server.
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
913
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
914 @param filename name of the file to write
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
915 @type str
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
916 @param data data to be written
10546
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
917 @type bytes
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
918 @param withBackup flag indicating to create a backup file first
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
919 (defaults to False)
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
920 @type bool (optional)
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
921 @exception OSError raised in case the server reported an issue
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
922 """
10546
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
923 loop = QEventLoop()
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
924 ok = False
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
925 error = ""
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
926
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
927 def callback(reply, params):
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
928 """
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
929 Function to handle the server reply
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
930
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
931 @param reply name of the server reply
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
932 @type str
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
933 @param params dictionary containing the reply data
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
934 @type dict
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
935 """
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
936 nonlocal ok, error
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
937
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
938 if reply == "WriteFile":
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
939 ok = params["ok"]
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
940 with contextlib.suppress(KeyError):
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
941 error = params["error"]
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
942 loop.quit()
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
943
10577
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
944 if not self.__serverInterface.isServerConnected():
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
945 raise OSError("Not connected to an 'eric-ide' server.")
10546
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
946
10577
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
947 else:
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
948 self.__serverInterface.sendJson(
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
949 category=EricRequestCategory.FileSystem,
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
950 request="WriteFile",
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
951 params={
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
952 "filename": FileSystemUtilities.plainFileName(filename),
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
953 "filedata": str(base64.b85encode(data), encoding="ascii"),
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
954 "with_backup": withBackup,
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
955 },
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
956 callback=callback,
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
957 )
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
958
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
959 loop.exec()
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
960 if not ok:
b9edebd77c91 Made the coverage and file system server interfaces more resilient against not being connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10576
diff changeset
961 raise OSError(error)
10589
75b656c80a40 Added methods to read and write files with a given encoding to the eric-ide server file system interface and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10585
diff changeset
962
75b656c80a40 Added methods to read and write files with a given encoding to the eric-ide server file system interface and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10585
diff changeset
963 def readEncodedFile(self, filename, create=False):
75b656c80a40 Added methods to read and write files with a given encoding to the eric-ide server file system interface and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10585
diff changeset
964 """
75b656c80a40 Added methods to read and write files with a given encoding to the eric-ide server file system interface and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10585
diff changeset
965 Function to read a file and decode its contents into proper text.
75b656c80a40 Added methods to read and write files with a given encoding to the eric-ide server file system interface and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10585
diff changeset
966
75b656c80a40 Added methods to read and write files with a given encoding to the eric-ide server file system interface and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10585
diff changeset
967 @param filename name of the file to read
75b656c80a40 Added methods to read and write files with a given encoding to the eric-ide server file system interface and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10585
diff changeset
968 @type str
75b656c80a40 Added methods to read and write files with a given encoding to the eric-ide server file system interface and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10585
diff changeset
969 @param create flag indicating to create an empty file, if it does not exist
75b656c80a40 Added methods to read and write files with a given encoding to the eric-ide server file system interface and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10585
diff changeset
970 (defaults to False)
75b656c80a40 Added methods to read and write files with a given encoding to the eric-ide server file system interface and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10585
diff changeset
971 @type bool (optional)
75b656c80a40 Added methods to read and write files with a given encoding to the eric-ide server file system interface and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10585
diff changeset
972 @return tuple of decoded text and encoding
75b656c80a40 Added methods to read and write files with a given encoding to the eric-ide server file system interface and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10585
diff changeset
973 @rtype tuple of (str, str)
75b656c80a40 Added methods to read and write files with a given encoding to the eric-ide server file system interface and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10585
diff changeset
974 """
75b656c80a40 Added methods to read and write files with a given encoding to the eric-ide server file system interface and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10585
diff changeset
975 data = self.readFile(filename, create=create)
75b656c80a40 Added methods to read and write files with a given encoding to the eric-ide server file system interface and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10585
diff changeset
976 return Utilities.decode(data)
75b656c80a40 Added methods to read and write files with a given encoding to the eric-ide server file system interface and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10585
diff changeset
977
75b656c80a40 Added methods to read and write files with a given encoding to the eric-ide server file system interface and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10585
diff changeset
978 def readEncodedFileWithEncoding(self, filename, encoding, create=False):
75b656c80a40 Added methods to read and write files with a given encoding to the eric-ide server file system interface and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10585
diff changeset
979 """
75b656c80a40 Added methods to read and write files with a given encoding to the eric-ide server file system interface and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10585
diff changeset
980 Function to read a file and decode its contents into proper text.
75b656c80a40 Added methods to read and write files with a given encoding to the eric-ide server file system interface and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10585
diff changeset
981
75b656c80a40 Added methods to read and write files with a given encoding to the eric-ide server file system interface and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10585
diff changeset
982 @param filename name of the file to read
75b656c80a40 Added methods to read and write files with a given encoding to the eric-ide server file system interface and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10585
diff changeset
983 @type str
75b656c80a40 Added methods to read and write files with a given encoding to the eric-ide server file system interface and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10585
diff changeset
984 @param encoding encoding to be used to read the file
75b656c80a40 Added methods to read and write files with a given encoding to the eric-ide server file system interface and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10585
diff changeset
985 @type str
75b656c80a40 Added methods to read and write files with a given encoding to the eric-ide server file system interface and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10585
diff changeset
986 @param create flag indicating to create an empty file, if it does not exist
75b656c80a40 Added methods to read and write files with a given encoding to the eric-ide server file system interface and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10585
diff changeset
987 (defaults to False)
75b656c80a40 Added methods to read and write files with a given encoding to the eric-ide server file system interface and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10585
diff changeset
988 @type bool (optional)
75b656c80a40 Added methods to read and write files with a given encoding to the eric-ide server file system interface and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10585
diff changeset
989 @return tuple of decoded text and encoding
75b656c80a40 Added methods to read and write files with a given encoding to the eric-ide server file system interface and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10585
diff changeset
990 @rtype tuple of (str, str)
75b656c80a40 Added methods to read and write files with a given encoding to the eric-ide server file system interface and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10585
diff changeset
991 """
75b656c80a40 Added methods to read and write files with a given encoding to the eric-ide server file system interface and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10585
diff changeset
992 data = self.readFile(filename, create=create)
75b656c80a40 Added methods to read and write files with a given encoding to the eric-ide server file system interface and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10585
diff changeset
993 return Utilities.decodeWithEncoding(data, encoding)
75b656c80a40 Added methods to read and write files with a given encoding to the eric-ide server file system interface and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10585
diff changeset
994
75b656c80a40 Added methods to read and write files with a given encoding to the eric-ide server file system interface and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10585
diff changeset
995 def writeEncodedFile(self, filename, text, origEncoding, forcedEncoding="", withBackup=False):
75b656c80a40 Added methods to read and write files with a given encoding to the eric-ide server file system interface and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10585
diff changeset
996 """
75b656c80a40 Added methods to read and write files with a given encoding to the eric-ide server file system interface and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10585
diff changeset
997 Function to write a file with properly encoded text.
75b656c80a40 Added methods to read and write files with a given encoding to the eric-ide server file system interface and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10585
diff changeset
998
75b656c80a40 Added methods to read and write files with a given encoding to the eric-ide server file system interface and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10585
diff changeset
999 @param filename name of the file to read
75b656c80a40 Added methods to read and write files with a given encoding to the eric-ide server file system interface and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10585
diff changeset
1000 @type str
75b656c80a40 Added methods to read and write files with a given encoding to the eric-ide server file system interface and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10585
diff changeset
1001 @param text text to be written
75b656c80a40 Added methods to read and write files with a given encoding to the eric-ide server file system interface and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10585
diff changeset
1002 @type str
75b656c80a40 Added methods to read and write files with a given encoding to the eric-ide server file system interface and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10585
diff changeset
1003 @param origEncoding type of the original encoding
75b656c80a40 Added methods to read and write files with a given encoding to the eric-ide server file system interface and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10585
diff changeset
1004 @type str
75b656c80a40 Added methods to read and write files with a given encoding to the eric-ide server file system interface and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10585
diff changeset
1005 @param forcedEncoding encoding to be used for writing, if no coding
75b656c80a40 Added methods to read and write files with a given encoding to the eric-ide server file system interface and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10585
diff changeset
1006 line is present (defaults to "")
75b656c80a40 Added methods to read and write files with a given encoding to the eric-ide server file system interface and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10585
diff changeset
1007 @type str (optional)
75b656c80a40 Added methods to read and write files with a given encoding to the eric-ide server file system interface and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10585
diff changeset
1008 @param withBackup flag indicating to create a backup file first
75b656c80a40 Added methods to read and write files with a given encoding to the eric-ide server file system interface and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10585
diff changeset
1009 (defaults to False)
75b656c80a40 Added methods to read and write files with a given encoding to the eric-ide server file system interface and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10585
diff changeset
1010 @type bool (optional)
75b656c80a40 Added methods to read and write files with a given encoding to the eric-ide server file system interface and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10585
diff changeset
1011 @return encoding used for writing the file
75b656c80a40 Added methods to read and write files with a given encoding to the eric-ide server file system interface and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10585
diff changeset
1012 @rtype str
75b656c80a40 Added methods to read and write files with a given encoding to the eric-ide server file system interface and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10585
diff changeset
1013 """
75b656c80a40 Added methods to read and write files with a given encoding to the eric-ide server file system interface and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10585
diff changeset
1014 data, encoding = Utilities.encode(
75b656c80a40 Added methods to read and write files with a given encoding to the eric-ide server file system interface and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10585
diff changeset
1015 text, origEncoding, forcedEncoding=forcedEncoding
75b656c80a40 Added methods to read and write files with a given encoding to the eric-ide server file system interface and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10585
diff changeset
1016 )
75b656c80a40 Added methods to read and write files with a given encoding to the eric-ide server file system interface and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10585
diff changeset
1017 self.writeFile(filename, data, withBackup=withBackup)
75b656c80a40 Added methods to read and write files with a given encoding to the eric-ide server file system interface and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10585
diff changeset
1018
75b656c80a40 Added methods to read and write files with a given encoding to the eric-ide server file system interface and adapted the code accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10585
diff changeset
1019 return encoding

eric ide

mercurial