src/eric7/RemoteServerInterface/EricServerFileSystemInterface.py

Mon, 24 Feb 2025 15:43:49 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Mon, 24 Feb 2025 15:43:49 +0100
branch
eric7
changeset 11148
15e30f0c76a8
parent 11090
f5f5f5803935
permissions
-rw-r--r--

Adjusted the code to the modified issue codes.

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
11090
f5f5f5803935 Updated copyright for 2025.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11040
diff changeset
3 # Copyright (c) 2024 - 2025 Detlev Offenbach <detlev@die-offenbachs.de>
10539
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
10770
8b4ff92221da Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10636
diff changeset
12 import logging
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
13 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
14 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
15 import stat
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16
10631
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
17 from PyQt6.QtCore import QByteArray, QEventLoop, QObject, pyqtSlot
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18
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
19 from eric7 import Utilities
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20 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
21 from eric7.SystemUtilities import FileSystemUtilities
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22
10631
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
23 _RemoteFsCache = {}
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
24 # dictionary containing cached remote file system data keyed by remote path
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
25
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
26
10610
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
27 class EricServerNotConnectedError(OSError):
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
28 """
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
29 Class defining a special OSError indicating a missing server connection.
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
30 """
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
31
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
32 def __init__(self):
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
33 """
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
34 Constructor
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
35 """
10631
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
36 super().__init__("Not connected to an 'eric-ide' server.")
10610
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
37
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
38
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 class EricServerFileSystemInterface(QObject):
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 Class implementing the file system interface to the eric-ide server.
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43
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
44 _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
45
10610
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
46 NotConnectedMessage = "Not connected to an 'eric-ide' server."
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
47
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 def __init__(self, serverInterface):
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 Constructor
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 @param serverInterface reference to the eric-ide server interface
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 @type EricServerInterface
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 super().__init__(parent=serverInterface)
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 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
58 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
59 self.__connectionStateChanged
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
60 )
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
61
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
62 self.__serverPathSep = self.__getPathSep()
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63
10949
2057b1b198a5 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10770
diff changeset
64 def serverInterface(self):
2057b1b198a5 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10770
diff changeset
65 """
2057b1b198a5 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10770
diff changeset
66 Public method to get a reference to the server interface object.
2057b1b198a5 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10770
diff changeset
67
2057b1b198a5 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10770
diff changeset
68 @return reference to the server interface object
2057b1b198a5 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10770
diff changeset
69 @rtype EricServerInterface
2057b1b198a5 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10770
diff changeset
70 """
2057b1b198a5 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10770
diff changeset
71 return self.__serverInterface
2057b1b198a5 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10770
diff changeset
72
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
73 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
74 """
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
75 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
76
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
77 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
78
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
79 @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
80 @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
81 @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
82 @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
83 """
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
84 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
85 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
86
10584
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
87 @pyqtSlot(bool)
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
88 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
89 """
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
90 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
91
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
92 @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
93 @type bool
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
94 """
10633
dda7e43934dc Corrected some code formatting and coding style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10631
diff changeset
95 if connected and not bool(self.__serverPathSep):
dda7e43934dc Corrected some code formatting and coding style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10631
diff changeset
96 self.__serverPathSep = self.__getPathSep()
10584
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
97
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
98 def __getPathSep(self):
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
99 """
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
100 Private method to get the path separator of the connected server.
10596
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
101
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
102 @return path separator character of the server
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
103 @rtype str
10584
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
104 """
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
105 loop = QEventLoop()
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
106 sep = ""
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
107
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
108 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
109 """
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
110 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
111
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
112 @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
113 @type str
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
114 @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
115 @type dict
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
116 """
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
117 nonlocal sep
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
118
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
119 if reply == "GetPathSep":
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
120 sep = params["separator"]
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
121 loop.quit()
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
122
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
123 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
124 self.__serverInterface.sendJson(
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
125 category=EricRequestCategory.FileSystem,
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
126 request="GetPathSep",
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
127 params={},
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
128 callback=callback,
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
129 )
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
130
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
131 loop.exec()
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
132
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
133 return sep
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
134
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135 def getcwd(self):
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137 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
138
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 @return current working directory of the eric-ide server
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 @rtype str
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142 loop = QEventLoop()
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143 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 callback(reply, params):
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 Function to handle the server reply
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 reply name of the server reply
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 @param params dictionary containing the reply data
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152 @type dict
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 nonlocal cwd
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156 if reply == "Getcwd":
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157 cwd = params["directory"]
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158 loop.quit()
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159
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
160 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
161 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
162 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
163 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
164 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
165 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
166 )
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167
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
168 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
169
10610
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
170 return FileSystemUtilities.remoteFileName(cwd)
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
171
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
172 def chdir(self, directory):
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
173 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
174 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
175
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
176 @param directory absolute path of the working directory to change to
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177 @type str
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178 @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
179 @rtype tuple of (bool, str)
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181 loop = QEventLoop()
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182 ok = False
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
183 error = ""
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
184
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
185 def callback(reply, params):
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
186 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
187 Function to handle the server reply
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 @param reply name of the server reply
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
190 @type str
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
191 @param params dictionary containing the reply data
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
192 @type dict
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
193 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
194 nonlocal ok, error
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
195
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
196 if reply == "Chdir":
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
197 ok = params["ok"]
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
198 with contextlib.suppress(KeyError):
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
199 error = params["error"]
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
200 loop.quit()
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
201
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
202 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
203 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
204 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
205 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
206 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
207 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
208 )
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
209
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
210 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
211 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
212
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
213 else:
10610
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
214 return False, EricServerFileSystemInterface.NotConnectedMessage
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
215
10631
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
216 def listdir(self, directory="", recursive=False):
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
217 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
218 Public method to get a directory listing.
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
219
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
220 @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
221 the eric-ide server current directory. (defaults to "")
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
222 @type str (optional)
10631
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
223 @param recursive flag indicating a recursive listing (defaults to False)
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
224 @type bool (optional)
10610
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
225 @return tuple containing the listed directory, the path separator and the
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
226 directory listing. Each directory listing entry contains a dictionary
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
227 with the relevant data.
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
228 @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
229 @exception OSError raised in case the server reported an issue
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
230 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
231 if directory is None:
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
232 # sanitize the directory in case it is None
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
233 directory = ""
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
234
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
235 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
236 ok = False
d3e21f44887b Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10546
diff changeset
237 error = ""
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
238 listedDirectory = ""
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
239 separator = ""
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
240 listing = []
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
241
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
242 def callback(reply, params):
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
243 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
244 Function to handle the server reply
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
245
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
246 @param reply name of the server reply
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
247 @type str
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
248 @param params dictionary containing the reply data
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
249 @type dict
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
250 """
10548
d3e21f44887b Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10546
diff changeset
251 nonlocal listedDirectory, listing, separator, ok, error
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
252
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
253 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
254 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
255 if ok:
d3e21f44887b Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10546
diff changeset
256 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
257 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
258 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
259 else:
d3e21f44887b Improved the 'listdir()' remote server method in order to report issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10546
diff changeset
260 error = params["error"]
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
261 loop.quit()
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
262
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
263 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
264 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
265 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
266 request="Listdir",
10631
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
267 params={
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
268 "directory": FileSystemUtilities.plainFileName(directory),
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
269 "recursive": recursive,
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
270 },
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
271 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
272 )
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
273
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
274 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
275 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
276 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
277
10605
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
278 for entry in listing:
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
279 entry["path"] = FileSystemUtilities.remoteFileName(entry["path"])
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
280
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
281 return listedDirectory, separator, listing
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
282
10576
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
283 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
284 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
285 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
286 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
287 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
288 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
289 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
290 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
291 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
292 ):
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
293 """
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
294 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
295
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
296 @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
297 @type str
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
298 @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
299 @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
300 @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
301 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
302 @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
303 @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
304 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
305 @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
306 @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
307 @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
308 @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
309 @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
310 @param dirsonly flag indicating to return only directories. When True it has
10631
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
311 precedence over the 'filesonly' parameter (defaults to False)
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
312 @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
313 @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
314 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
315 @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
316 @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
317 """
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
318 loop = QEventLoop()
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
319 ok = False
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
320 error = ""
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
321 result = []
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
322
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
323 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
324 """
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
325 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
326
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
327 @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
328 @type str
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
329 @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
330 @type dict
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
331 """
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
332 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
333
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
334 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
335 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
336 if ok:
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
337 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
338 else:
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
339 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
340 loop.quit()
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
341
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
342 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
343 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
344 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
345 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
346 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
347 "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
348 "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
349 "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
350 "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
351 "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
352 "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
353 "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
354 },
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
355 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
356 )
10576
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
357
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
358 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
359 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
360 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
361
10610
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
362 return [FileSystemUtilities.remoteFileName(r) for r in result]
10576
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
363
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
364 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
365 """
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
366 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
367 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
368
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
369 @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
370 @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
371 @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
372 @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
373 @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
374 @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
375 @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
376 @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
377 """
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
378 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
379
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
380 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
381 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
382 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
383 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
384 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
385 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
386 )
10596
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
387 result = (
10605
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
388 [FileSystemUtilities.remoteFileName(e) for e in entries]
10596
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
389 if includeHidden
10605
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
390 else [
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
391 FileSystemUtilities.remoteFileName(e)
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
392 for e in entries
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
393 if not e.startswith(".")
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
394 ]
10596
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
395 )
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
396
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
397 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
398
10546
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
399 def stat(self, filename, stNames):
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
400 """
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
401 Public method to get the status of a file.
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
402
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
403 @param filename name of the file
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
404 @type str
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
405 @param stNames list of 'stat_result' members to retrieve
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
406 @type list of str
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
407 @return dictionary containing the requested status data
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
408 @rtype dict
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
409 @exception OSError raised in case the server reported an issue
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
410 """
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
411 loop = QEventLoop()
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
412 ok = False
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
413 error = ""
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
414 stResult = {}
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
415
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
416 def callback(reply, params):
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
417 """
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
418 Function to handle the server reply
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
419
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
420 @param reply name of the server reply
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
421 @type str
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
422 @param params dictionary containing the reply data
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
423 @type dict
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
424 """
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
425 nonlocal ok, error, stResult
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
426
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
427 if reply == "Stat":
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
428 ok = params["ok"]
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
429 if ok:
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
430 stResult = params["result"]
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
431 else:
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
432 error = params["error"]
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
433 loop.quit()
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
434
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
435 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
436 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
437 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
438 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
439 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
440 "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
441 "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
442 },
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
443 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
444 )
10546
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
445
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
446 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
447 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
448 raise OSError(error)
10546
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
449
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
450 return stResult
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
451
10576
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
452 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
453 """
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
454 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
455
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
456 @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
457 @type str
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
458 @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
459 @rtype bool
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
460 """
10631
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
461 try:
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
462 return stat.S_ISDIR(_RemoteFsCache[name]["mode"])
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
463 except KeyError:
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
464 with contextlib.suppress(KeyError, OSError):
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
465 result = self.stat(name, ["st_mode"])
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
466 return stat.S_ISDIR(result["st_mode"])
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
467
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
468 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
469
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
470 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
471 """
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
472 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
473
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
474 @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
475 @type str
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
476 @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
477 @rtype bool
0cf5ebf17411 Adapted the Code Metrics dialog to support remote files and directories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10574
diff changeset
478 """
10631
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
479 try:
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
480 return stat.S_ISREG(_RemoteFsCache[name]["mode"])
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
481 except KeyError:
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
482 with contextlib.suppress(KeyError, OSError):
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
483 result = self.stat(name, ["st_mode"])
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
484 return stat.S_ISREG(result["st_mode"])
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
485
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
486 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
487
10546
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
488 def exists(self, name):
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
489 """
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
490 Public method the existence of a file or directory.
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
491
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
492 @param name name of the file or directory
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
493 @type str
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
494 @return flag indicating the file existence
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
495 @rtype bool
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
496 """
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
497 loop = QEventLoop()
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
498 nameExists = False
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 def callback(reply, params):
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
501 """
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
502 Function to handle the server reply
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 @param reply name of the server reply
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
505 @type str
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
506 @param params dictionary containing the reply data
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
507 @type dict
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 nonlocal nameExists
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 if reply == "Exists":
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
512 nameExists = params["exists"]
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
513 loop.quit()
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
514
10631
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
515 if name in _RemoteFsCache:
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
516 return True
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
517
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
518 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
519 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
520 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
521 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
522 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
523 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
524 )
10546
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
525
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
526 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
527
10546
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
528 return nameExists
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
529
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
530 def access(self, name, modes):
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
531 """
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
532 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
533
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
534 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
535
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
536 @param name name of the file or directory
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
537 @type str
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
538 @param modes list of modes to check for
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
539 @type str or list of str
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
540 @return flag indicating the user has the asked for permissions
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
541 @rtype bool
10561
be23a662d709 Implemented (most) of the eric-ide server debugging functionality.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10555
diff changeset
542 @exception ValueError raised for an illegal modes list
10546
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
543 """
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
544 if not modes:
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
545 raise ValueError(
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
546 "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
547 )
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
548
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
549 if isinstance(modes, str):
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
550 # convert to a list with one element
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
551 modes = [modes]
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
552
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
553 loop = QEventLoop()
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
554 accessOK = False
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
555
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
556 def callback(reply, params):
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
557 """
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
558 Function to handle the server reply
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
559
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
560 @param reply name of the server reply
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
561 @type str
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
562 @param params dictionary containing the reply data
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
563 @type dict
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
564 """
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
565 nonlocal accessOK
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
566
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
567 if reply == "Access":
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
568 accessOK = params["ok"]
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
569 loop.quit()
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
570
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
571 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
572 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
573 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
574 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
575 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
576 "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
577 "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
578 },
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 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
580 )
10546
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
581
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
582 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
583
10546
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
584 return accessOK
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
585
11040
a4fd43ac7923 Modified the project properties dialog to show a note about the project directory and fixed an issue causing unwanted enabling of the OK button.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10949
diff changeset
586 def isEmpty(self, name):
a4fd43ac7923 Modified the project properties dialog to show a note about the project directory and fixed an issue causing unwanted enabling of the OK button.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10949
diff changeset
587 """
a4fd43ac7923 Modified the project properties dialog to show a note about the project directory and fixed an issue causing unwanted enabling of the OK button.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10949
diff changeset
588 Public method to check, if the given name is empty (i.e. just the remote
a4fd43ac7923 Modified the project properties dialog to show a note about the project directory and fixed an issue causing unwanted enabling of the OK button.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10949
diff changeset
589 name indicator).
a4fd43ac7923 Modified the project properties dialog to show a note about the project directory and fixed an issue causing unwanted enabling of the OK button.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10949
diff changeset
590
a4fd43ac7923 Modified the project properties dialog to show a note about the project directory and fixed an issue causing unwanted enabling of the OK button.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10949
diff changeset
591 @param name file or directory path to be checked
a4fd43ac7923 Modified the project properties dialog to show a note about the project directory and fixed an issue causing unwanted enabling of the OK button.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10949
diff changeset
592 @type str
a4fd43ac7923 Modified the project properties dialog to show a note about the project directory and fixed an issue causing unwanted enabling of the OK button.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10949
diff changeset
593 @return flag indicating an empty path
a4fd43ac7923 Modified the project properties dialog to show a note about the project directory and fixed an issue causing unwanted enabling of the OK button.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10949
diff changeset
594 @rtype bool
a4fd43ac7923 Modified the project properties dialog to show a note about the project directory and fixed an issue causing unwanted enabling of the OK button.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10949
diff changeset
595 """
a4fd43ac7923 Modified the project properties dialog to show a note about the project directory and fixed an issue causing unwanted enabling of the OK button.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10949
diff changeset
596 return not bool(FileSystemUtilities.plainFileName(name))
a4fd43ac7923 Modified the project properties dialog to show a note about the project directory and fixed an issue causing unwanted enabling of the OK button.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10949
diff changeset
597
10949
2057b1b198a5 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10770
diff changeset
598 def mkdir(self, directory, mode=0o777):
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
599 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
600 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
601
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
602 @param directory absolute path of the new directory
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
603 @type str
10949
2057b1b198a5 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10770
diff changeset
604 @param mode permissions value (defaults to 0o777)
2057b1b198a5 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10770
diff changeset
605 @type int
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
606 @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
607 @rtype tuple of (bool, str)
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
608 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
609 loop = QEventLoop()
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
610 ok = False
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
611 error = ""
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
612
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
613 def callback(reply, params):
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
614 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
615 Function to handle the server reply
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
616
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
617 @param reply name of the server reply
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
618 @type str
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
619 @param params dictionary containing the reply data
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
620 @type dict
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
621 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
622 nonlocal ok, error
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
623
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
624 if reply == "Mkdir":
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
625 ok = params["ok"]
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
626 with contextlib.suppress(KeyError):
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
627 error = params["error"]
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
628 loop.quit()
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
629
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
630 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
631 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
632 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
633 request="Mkdir",
10949
2057b1b198a5 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10770
diff changeset
634 params={
2057b1b198a5 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10770
diff changeset
635 "directory": FileSystemUtilities.plainFileName(directory),
2057b1b198a5 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10770
diff changeset
636 "mode": mode,
2057b1b198a5 IDE Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10770
diff changeset
637 },
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
638 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
639 )
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
640
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
641 loop.exec()
10631
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
642 if ok:
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
643 self.populateFsCache(directory)
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
644 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
645
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
646 else:
10610
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
647 return False, EricServerFileSystemInterface.NotConnectedMessage
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
648
10596
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
649 def makedirs(self, directory, exist_ok=False):
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
650 """
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
651 Public method to create a new directory on the eric-ide serverincluding all
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
652 intermediate-level directories.
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
653
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
654 @param directory absolute path of the new directory
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
655 @type str
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
656 @param exist_ok flag indicating that the existence of the directory is
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
657 acceptable (defaults to False)
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
658 @type bool (optional)
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
659 @return tuple containing an OK flag and an error string in case of an issue
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
660 @rtype tuple of (bool, str)
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
661 """
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
662 loop = QEventLoop()
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
663 ok = False
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
664 error = ""
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
665
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
666 def callback(reply, params):
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
667 """
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
668 Function to handle the server reply
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
669
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
670 @param reply name of the server reply
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
671 @type str
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
672 @param params dictionary containing the reply data
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
673 @type dict
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
674 """
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
675 nonlocal ok, error
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
676
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
677 if reply == "MakeDirs":
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
678 ok = params["ok"]
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
679 with contextlib.suppress(KeyError):
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
680 error = params["error"]
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
681 loop.quit()
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
682
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
683 if self.__serverInterface.isServerConnected():
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
684 self.__serverInterface.sendJson(
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
685 category=EricRequestCategory.FileSystem,
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
686 request="MakeDirs",
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
687 params={
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
688 "directory": FileSystemUtilities.plainFileName(directory),
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
689 "exist_ok": exist_ok,
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
690 },
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
691 callback=callback,
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
692 )
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
693
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
694 loop.exec()
10631
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
695 if ok:
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
696 self.populateFsCache(directory)
10596
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
697 return ok, error
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
698
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
699 else:
10610
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
700 return False, EricServerFileSystemInterface.NotConnectedMessage
10596
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
701
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
702 def rmdir(self, directory):
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
703 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
704 Public method to delete a directory on the eric-ide server.
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
705
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
706 @param directory absolute path of the directory
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
707 @type str
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
708 @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
709 @rtype tuple of (bool, str)
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
710 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
711 loop = QEventLoop()
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
712 ok = False
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
713 error = ""
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
714
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
715 def callback(reply, params):
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
716 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
717 Function to handle the server reply
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
718
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
719 @param reply name of the server reply
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
720 @type str
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
721 @param params dictionary containing the reply data
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
722 @type dict
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
723 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
724 nonlocal ok, error
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
725
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
726 if reply == "Rmdir":
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
727 ok = params["ok"]
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
728 with contextlib.suppress(KeyError):
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
729 error = params["error"]
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
730 loop.quit()
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
731
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
732 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
733 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
734 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
735 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
736 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
737 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
738 )
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
739
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
740 loop.exec()
10631
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
741 if ok:
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
742 self.removeFromFsCache(directory)
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
743 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
744
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
745 else:
10610
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
746 return False, EricServerFileSystemInterface.NotConnectedMessage
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
747
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
748 def replace(self, oldName, newName):
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
749 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
750 Public method to rename a file or directory.
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
751
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
752 @param oldName current name of the file or directory
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
753 @type str
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
754 @param newName new name for the file or directory
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
755 @type str
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
756 @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
757 @rtype tuple of (bool, str)
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
758 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
759 loop = QEventLoop()
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
760 ok = False
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
761 error = ""
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
762
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
763 def callback(reply, params):
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
764 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
765 Function to handle the server reply
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
766
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
767 @param reply name of the server reply
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
768 @type str
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
769 @param params dictionary containing the reply data
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
770 @type dict
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
771 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
772 nonlocal ok, error
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
773
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
774 if reply == "Replace":
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
775 ok = params["ok"]
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
776 with contextlib.suppress(KeyError):
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
777 error = params["error"]
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
778 loop.quit()
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
779
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
780 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
781 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
782 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
783 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
784 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
785 "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
786 "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
787 },
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
788 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
789 )
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
790
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
791 loop.exec()
10631
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
792 if ok:
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
793 with contextlib.suppress(KeyError):
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
794 entry = _RemoteFsCache.pop(oldName)
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
795 entry["path"] = newName
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
796 entry["name"] = self.basename(newName)
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
797 _RemoteFsCache[newName] = entry
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
798 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
799
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
800 else:
10610
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
801 return False, EricServerFileSystemInterface.NotConnectedMessage
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
802
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
803 def remove(self, filename):
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
804 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
805 Public method to delete a file on the eric-ide server.
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
806
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
807 @param filename absolute path of the file
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
808 @type str
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
809 @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
810 @rtype tuple of (bool, str)
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
811 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
812 loop = QEventLoop()
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
813 ok = False
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
814 error = ""
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
815
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
816 def callback(reply, params):
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
817 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
818 Function to handle the server reply
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
819
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
820 @param reply name of the server reply
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
821 @type str
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
822 @param params dictionary containing the reply data
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
823 @type dict
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
824 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
825 nonlocal ok, error
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
826
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
827 if reply == "Remove":
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
828 ok = params["ok"]
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
829 with contextlib.suppress(KeyError):
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
830 error = params["error"]
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
831 loop.quit()
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
832
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
833 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
834 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
835 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
836 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
837 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
838 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
839 )
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
840
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
841 loop.exec()
10631
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
842 if ok:
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
843 with contextlib.suppress(KeyError):
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
844 del _RemoteFsCache[filename]
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
845 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
846
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
847 else:
10610
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
848 return False, EricServerFileSystemInterface.NotConnectedMessage
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
849
10605
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
850 def expanduser(self, name):
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
851 """
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
852 Public method to expand an initial '~' or '~user' component.
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
853
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
854 @param name path name to be expanded
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
855 @type str
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
856 @return expanded path name
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
857 @rtype str
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
858 """
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
859 loop = QEventLoop()
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
860 ok = False
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
861 expandedName = name
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
862
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
863 def callback(reply, params):
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
864 """
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
865 Function to handle the server reply
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
866
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
867 @param reply name of the server reply
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
868 @type str
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
869 @param params dictionary containing the reply data
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
870 @type dict
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
871 """
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
872 nonlocal ok, expandedName
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
873
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
874 if reply == "ExpandUser":
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
875 ok = params["ok"]
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
876 expandedName = params["name"]
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
877 loop.quit()
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
878
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
879 if self.__serverInterface.isServerConnected():
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
880 self.__serverInterface.sendJson(
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
881 category=EricRequestCategory.FileSystem,
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
882 request="ExpandUser",
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
883 params={"name": FileSystemUtilities.plainFileName(name)},
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
884 callback=callback,
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
885 )
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
886
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
887 loop.exec()
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
888 if FileSystemUtilities.isRemoteFileName(name):
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
889 return FileSystemUtilities.remoteFileName(expandedName)
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
890 else:
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
891 return expandedName
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
892
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
893 #######################################################################
10584
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
894 ## 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
895 ##
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
896 ## 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
897 ## '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
898 #######################################################################
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
899
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
900 def separator(self):
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
901 """
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
902 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
903
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
904 @return path separator
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
905 @rtype str
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
906 """
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
907 return self.__serverPathSep
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
908
10610
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
909 def isabs(self, p):
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
910 """
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
911 Public method to chack a path for being an absolute path.
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
912
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
913 @param p path to be checked
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
914 @type str
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
915 @return flag indicating an absolute path
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
916 @rtype bool
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
917 """
10631
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
918 if self.__serverPathSep == "\\":
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
919 s = FileSystemUtilities.plainFileName(p)[:3].replace("/", "\\")
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
920 return s.startswith("\\)") or s.startswith(":\\", 1)
10610
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
921 else:
10631
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
922 return FileSystemUtilities.plainFileName(p).startswith("/")
10610
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
923
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
924 def abspath(self, p):
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
925 """
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
926 Public method to convert the given path to an absolute path.
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
927
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
928 @param p path to be converted
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
929 @type str
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
930 @return absolute path
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
931 @rtype str
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
932 """
10631
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
933 p = FileSystemUtilities.plainFileName(p)
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
934 if not self.isabs(p):
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
935 p = self.join(self.getcwd(), p)
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
936 return FileSystemUtilities.remoteFileName(p)
10610
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
937
10584
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
938 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
939 """
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
940 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
941 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
942
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
943 @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
944 @type str
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
945 @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
946 @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
947 @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
948 @rtype str
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
949 """
10631
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
950 path = a
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
951 for b in p:
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
952 if b.startswith(self.__serverPathSep):
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
953 path = b
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
954 elif not path or path.endswith(self.__serverPathSep):
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
955 path += b
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
956 else:
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
957 path += self.__serverPathSep + b
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
958 return path
10584
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
959
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
960 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
961 """
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
962 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
963
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
964 @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
965 @type str
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
966 @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
967 path separator.
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
968 @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
969 """
10633
dda7e43934dc Corrected some code formatting and coding style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10631
diff changeset
970 normp = (
dda7e43934dc Corrected some code formatting and coding style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10631
diff changeset
971 p.replace("/", "\\") # remote is a Windows system
dda7e43934dc Corrected some code formatting and coding style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10631
diff changeset
972 if self.__serverPathSep == "\\"
dda7e43934dc Corrected some code formatting and coding style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10631
diff changeset
973 else p.replace("\\", "/") # remote is a Posix system
dda7e43934dc Corrected some code formatting and coding style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10631
diff changeset
974 )
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
975
10631
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
976 i = normp.rfind(self.__serverPathSep) + 1
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
977 head, tail = normp[:i], normp[i:]
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
978 if head and head != self.__serverPathSep * len(head):
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
979 head = head.rstrip(self.__serverPathSep)
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
980 return head, tail
10584
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
981
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
982 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
983 """
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
984 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
985
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
986 @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
987 @type str
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
988 @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
989 @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
990 """
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
991 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
992
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
993 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
994 """
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
995 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
996
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
997 @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
998 @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
999 @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
1000 @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
1001 """
10631
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
1002 plainp = FileSystemUtilities.plainFileName(p)
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
1003
10631
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
1004 if self.__serverPathSep == "\\":
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
1005 # remote is a Windows system
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
1006 normp = plainp.replace("/", "\\")
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
1007 if normp[1:2] == ":":
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
1008 return normp[:2], normp[2:]
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
1009 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
1010 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
1011 else:
10631
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
1012 # remote is a Posix system
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
1013 normp = plainp.replace("\\", "/")
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
1014 return "", normp
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
1015
10584
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
1016 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
1017 """
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
1018 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
1019
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
1020 @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
1021 @type str
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
1022 @return directory component
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
1023 @rtype str
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
1024 """
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
1025 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
1026
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
1027 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
1028 """
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
1029 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
1030
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
1031 @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
1032 @type str
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
1033 @return final component
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
1034 @rtype str
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
1035 """
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
1036 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
1037
10596
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
1038 def toNativeSeparators(self, p):
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
1039 """
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
1040 Public method to convert a path to use server native separator characters.
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
1041
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
1042 @param p path name to be converted
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
1043 @type str
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
1044 @return path name with converted separator characters
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
1045 @rtype str
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
1046 """
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
1047 if self.__serverPathSep == "/":
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
1048 return p.replace("\\", "/")
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
1049 else:
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
1050 return p.replace("/", "\\")
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
1051
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
1052 def fromNativeSeparators(self, p):
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
1053 """
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
1054 Public method to convert a path using server native separator characters to
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
1055 use "/" separator characters.
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
1056
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
1057 @param p path name to be converted
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
1058 @type str
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
1059 @return path name with converted separator characters
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
1060 @rtype str
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
1061 """
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
1062 return p.replace(self.__serverPathSep, "/")
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
1063
10584
a596cf392291 Adapted the Imports diagram to support the 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10583
diff changeset
1064 #######################################################################
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1065 ## Methods for reading and writing files
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1066 #######################################################################
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1067
10631
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
1068 def readFile(self, filename, create=False, newline=None):
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1069 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1070 Public method to read a file from the eric-ide server.
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1071
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1072 @param filename name of the file to read
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1073 @type str
10546
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
1074 @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
1075 (defaults to False)
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
1076 @type bool (optional)
10631
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
1077 @param newline determines how to parse newline characters from the stream
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
1078 (defaults to None)
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
1079 @type str (optional)
10546
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
1080 @return bytes data read from the eric-ide server
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
1081 @rtype bytes
10610
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1082 @exception EricServerNotConnectedError raised to indicate a missing server
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1083 connection
10546
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
1084 @exception OSError raised in case the server reported an issue
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1085 """
10546
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
1086 loop = QEventLoop()
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
1087 ok = False
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
1088 error = ""
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
1089 bText = b""
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
1090
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
1091 def callback(reply, params):
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
1092 """
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
1093 Function to handle the server reply
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
1094
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
1095 @param reply name of the server reply
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
1096 @type str
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
1097 @param params dictionary containing the reply data
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
1098 @type dict
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
1099 """
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
1100 nonlocal ok, error, bText
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1101
10546
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
1102 if reply == "ReadFile":
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
1103 ok = params["ok"]
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
1104 if ok:
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
1105 bText = base64.b85decode(
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
1106 bytes(params["filedata"], encoding="ascii")
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
1107 )
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
1108 else:
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
1109 error = params["error"]
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
1110 loop.quit()
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
1111
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
1112 if not self.__serverInterface.isServerConnected():
10610
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1113 raise EricServerNotConnectedError()
10546
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
1114
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
1115 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
1116 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
1117 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
1118 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
1119 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
1120 "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
1121 "create": create,
10631
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
1122 "newline": "<<none>>" if newline is None else newline,
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
1123 },
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
1124 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
1125 )
10546
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
1126
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
1127 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
1128 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
1129 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
1130
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
1131 return bText
10546
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
1132
10631
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
1133 def writeFile(self, filename, data, withBackup=False, newline=None):
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1134 """
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1135 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
1136
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1137 @param filename name of the file to write
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1138 @type str
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1139 @param data data to be written
10631
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
1140 @type bytes or QByteArray
10546
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
1141 @param withBackup flag indicating to create a backup file first
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
1142 (defaults to False)
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
1143 @type bool (optional)
10631
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
1144 @param newline determines how to parse newline characters from the stream
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
1145 (defaults to None)
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
1146 @type str (optional)
10610
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1147 @exception EricServerNotConnectedError raised to indicate a missing server
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1148 connection
10546
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
1149 @exception OSError raised in case the server reported an issue
10539
4274f189ff78 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1150 """
10546
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
1151 loop = QEventLoop()
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
1152 ok = False
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
1153 error = ""
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
1154
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
1155 def callback(reply, params):
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
1156 """
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
1157 Function to handle the server reply
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
1158
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
1159 @param reply name of the server reply
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
1160 @type str
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
1161 @param params dictionary containing the reply data
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
1162 @type dict
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
1163 """
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
1164 nonlocal ok, error
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
1165
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
1166 if reply == "WriteFile":
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
1167 ok = params["ok"]
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
1168 with contextlib.suppress(KeyError):
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
1169 error = params["error"]
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
1170 loop.quit()
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
1171
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
1172 if not self.__serverInterface.isServerConnected():
10610
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1173 raise EricServerNotConnectedError
10546
300487f5f517 eric-ide Server
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10539
diff changeset
1174
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
1175 else:
10631
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
1176 if isinstance(data, QByteArray):
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
1177 data = bytes(data)
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
1178 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
1179 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
1180 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
1181 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
1182 "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
1183 "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
1184 "with_backup": withBackup,
10631
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
1185 "newline": "<<none>>" if newline is None else newline,
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
1186 },
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
1187 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
1188 )
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
1189
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
1190 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
1191 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
1192 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
1193
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
1194 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
1195 """
10596
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
1196 Public method to read a file and decode its contents into proper text.
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
1197
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
1198 @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
1199 @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
1200 @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
1201 (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
1202 @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
1203 @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
1204 @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
1205 """
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
1206 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
1207 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
1208
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
1209 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
1210 """
10596
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
1211 Public method to read a file and decode its contents into proper text.
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
1212
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
1213 @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
1214 @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
1215 @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
1216 @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
1217 @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
1218 (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
1219 @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
1220 @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
1221 @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
1222 """
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
1223 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
1224 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
1225
10596
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
1226 def writeEncodedFile(
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
1227 self, filename, text, origEncoding, forcedEncoding="", withBackup=False
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
1228 ):
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
1229 """
10596
ea35c92a3c7c Implemented first stage of remote project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10589
diff changeset
1230 Public method to write a file with properly encoded text.
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
1231
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
1232 @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
1233 @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
1234 @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
1235 @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
1236 @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
1237 @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
1238 @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
1239 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
1240 @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
1241 @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
1242 (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
1243 @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
1244 @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
1245 @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
1246 """
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
1247 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
1248 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
1249 )
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
1250 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
1251
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
1252 return encoding
10605
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
1253
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
1254 #######################################################################
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
1255 ## Methods implementing some 'shutil' like functionality.
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
1256 #######################################################################
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
1257
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
1258 def shutilCopy(self, srcName, dstName):
10610
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1259 """
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1260 Public method to copy a source file to a given destination file or directory.
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1261
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1262 @param srcName name of the source file
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1263 @type str
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1264 @param dstName name of the destination file or directory
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1265 @type str
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1266 @return name of the destination file
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1267 @rtype str
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1268 @exception EricServerNotConnectedError raised to indicate a missing server
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1269 connection
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1270 @exception OSError raised to indicate an issue
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1271 """
10605
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
1272 loop = QEventLoop()
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
1273 ok = False
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
1274 error = ""
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
1275 dst = ""
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
1276
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
1277 def callback(reply, params):
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
1278 """
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
1279 Function to handle the server reply
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
1280
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
1281 @param reply name of the server reply
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
1282 @type str
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
1283 @param params dictionary containing the reply data
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
1284 @type dict
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
1285 """
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
1286 nonlocal ok, error, dst
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
1287
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
1288 if reply == "ShutilCopy":
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
1289 ok = params["ok"]
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
1290 if ok:
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
1291 dst = params["dst"]
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
1292 else:
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
1293 error = params["error"]
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
1294 loop.quit()
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
1295
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
1296 if not self.__serverInterface.isServerConnected():
10610
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1297 raise EricServerNotConnectedError
10605
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
1298
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
1299 else:
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
1300 self.__serverInterface.sendJson(
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
1301 category=EricRequestCategory.FileSystem,
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
1302 request="ShutilCopy",
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
1303 params={
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
1304 "src_name": FileSystemUtilities.plainFileName(srcName),
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
1305 "dst_name": FileSystemUtilities.plainFileName(dstName),
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
1306 },
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
1307 callback=callback,
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
1308 )
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
1309
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
1310 loop.exec()
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
1311 if not ok:
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
1312 raise OSError(error)
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
1313
b6f5e27daeb5 Adapted the project 'Add Files' and 'Add Directory' functions to work with remote projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10596
diff changeset
1314 return dst
10610
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1315
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1316 def shutilRmtree(self, pathname, ignore_errors=False):
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1317 """
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1318 Public method to delete an entire directory tree.
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1319
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1320 @param pathname name of the directory to be deleted
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1321 @type str
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1322 @param ignore_errors flag indicating to ignore error resulting from failed
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1323 removals (defaults to False)
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1324 @type bool (optional)
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1325 @exception EricServerNotConnectedError raised to indicate a missing server
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1326 connection
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1327 @exception OSError raised to indicate an issue
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1328 """
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1329 loop = QEventLoop()
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1330 ok = False
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1331 error = ""
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1332
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1333 def callback(reply, params):
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1334 """
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1335 Function to handle the server reply
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1336
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1337 @param reply name of the server reply
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1338 @type str
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1339 @param params dictionary containing the reply data
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1340 @type dict
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1341 """
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1342 nonlocal ok, error
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1343
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1344 if reply == "ShutilRmtree":
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1345 ok = params["ok"]
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1346 if not ok:
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1347 error = params["error"]
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1348 loop.quit()
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1349
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1350 if not self.__serverInterface.isServerConnected():
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1351 raise EricServerNotConnectedError
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1352
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1353 else:
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1354 self.__serverInterface.sendJson(
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1355 category=EricRequestCategory.FileSystem,
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1356 request="ShutilRmtree",
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1357 params={
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1358 "name": FileSystemUtilities.plainFileName(pathname),
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1359 "ignore_errors": ignore_errors,
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1360 },
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1361 callback=callback,
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1362 )
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1363
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1364 loop.exec()
10631
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
1365 if ok:
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
1366 self.removeFromFsCache(pathname)
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
1367
10610
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1368 if not ok:
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1369 raise OSError(error)
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1370
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1371 #######################################################################
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1372 ## Utility methods.
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1373 #######################################################################
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1374
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1375 def compactPath(self, longPath, width, measure=len):
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1376 """
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1377 Public method to return a compacted path fitting inside the given width.
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1378
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1379 @param longPath path to be compacted
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1380 @type str
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1381 @param width width for the compacted path
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1382 @type int
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1383 @param measure reference to a function used to measure the length of the
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1384 string (defaults to len)
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1385 @type function (optional)
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1386 @return compacted path
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1387 @rtype str
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1388 """
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1389 if measure(longPath) <= width:
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1390 return longPath
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1391
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1392 ellipsis = "..."
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1393
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1394 head, tail = self.split(longPath)
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1395 mid = len(head) // 2
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1396 head1 = head[:mid]
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1397 head2 = head[mid:]
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1398 while head1:
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1399 # head1 is same size as head2 or one shorter
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1400 cpath = self.join(f"{head1}{ellipsis}{head2}", tail)
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1401 if measure(cpath) <= width:
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1402 return cpath
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1403 head1 = head1[:-1]
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1404 head2 = head2[1:]
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1405 cpath = self.join(ellipsis, tail)
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1406 if measure(cpath) <= width:
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1407 return cpath
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1408 remoteMarker = FileSystemUtilities.remoteFileName("")
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1409 if width <= len(remoteMarker):
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1410 return f"{remoteMarker}{ellipsis}{tail}"
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1411 while tail:
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1412 cpath = f"{remoteMarker}{ellipsis}{tail}"
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1413 if measure(cpath) <= width:
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1414 return cpath
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1415 tail = tail[1:]
bb0149571d94 Finished adapting the project functions to support an 'eric-ide' server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10605
diff changeset
1416 return ""
10631
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
1417
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
1418 #######################################################################
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
1419 ## Remote file system cache methods.
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
1420 #######################################################################
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
1421
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
1422 def populateFsCache(self, directory):
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
1423 """
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
1424 Public method to populate the remote file system cache for a given directory.
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
1425
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
1426 @param directory remote directory to be cached
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
1427 @type str
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
1428 @exception ValueError raised to indicate an empty directory
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
1429 """
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
1430 if not directory:
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
1431 raise ValueError("The directory to be cached must not be empty.")
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
1432
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
1433 try:
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
1434 listing = self.listdir(directory=directory, recursive=True)[2]
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
1435 for entry in listing:
10633
dda7e43934dc Corrected some code formatting and coding style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10631
diff changeset
1436 _RemoteFsCache[FileSystemUtilities.remoteFileName(entry["path"])] = (
dda7e43934dc Corrected some code formatting and coding style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10631
diff changeset
1437 entry
dda7e43934dc Corrected some code formatting and coding style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10631
diff changeset
1438 )
10770
8b4ff92221da Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10636
diff changeset
1439 logging.getLogger(__name__).debug(
8b4ff92221da Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10636
diff changeset
1440 f"Remote Cache Size: {len(_RemoteFsCache)} entries"
8b4ff92221da Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10636
diff changeset
1441 )
10631
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
1442 except OSError as err:
11148
15e30f0c76a8 Adjusted the code to the modified issue codes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
1443 print("Error in 'populateFsCache()':", str(err)) # noqa: M-801
10631
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
1444
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
1445 def removeFromFsCache(self, directory):
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
1446 """
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
1447 Public method to remove a given directory from the remote file system cache.
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
1448
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
1449 @param directory remote directory to be removed
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
1450 @type str
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
1451 """
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
1452 for entryPath in list(_RemoteFsCache.keys()):
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
1453 if entryPath.startswith(directory):
00f5aae565a3 Extended the project support for eric-ide server projects.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10610
diff changeset
1454 del _RemoteFsCache[entryPath]
10770
8b4ff92221da Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10636
diff changeset
1455 logging.getLogger(__name__).debug(
8b4ff92221da Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10636
diff changeset
1456 f"Remote Cache Size: {len(_RemoteFsCache)} entries"
8b4ff92221da Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10636
diff changeset
1457 )

eric ide

mercurial