33 @param encoding encoding to be used by the command server (string) |
33 @param encoding encoding to be used by the command server (string) |
34 @param parent reference to the parent object (QObject) |
34 @param parent reference to the parent object (QObject) |
35 """ |
35 """ |
36 super().__init__(parent) |
36 super().__init__(parent) |
37 |
37 |
38 self.__server = QProcess() |
38 self.__server = None |
39 self.__server.setWorkingDirectory(repoPath) |
|
40 self.__started = False |
39 self.__started = False |
41 self.__version = None |
40 self.__version = None |
42 self.__encoding = Preferences.getSystem("IOEncoding") |
41 self.__encoding = Preferences.getSystem("IOEncoding") |
43 self.__cancel = False |
42 self.__cancel = False |
44 self.__commandRunning = False |
43 self.__commandRunning = False |
45 |
44 self.__repoPath = repoPath |
46 # connect signals |
|
47 self.__server.finished.connect(self.__serverFinished) |
|
48 |
45 |
49 # generate command line and environment |
46 # generate command line and environment |
50 self.__serverArgs = [] |
47 self.__serverArgs = [] |
51 self.__serverArgs.append("serve") |
48 self.__serverArgs.append("serve") |
52 self.__serverArgs.append("--cmdserver") |
49 self.__serverArgs.append("--cmdserver") |
56 if repoPath: |
53 if repoPath: |
57 self.__serverArgs.append("--repository") |
54 self.__serverArgs.append("--repository") |
58 self.__serverArgs.append(repoPath) |
55 self.__serverArgs.append(repoPath) |
59 |
56 |
60 if encoding: |
57 if encoding: |
61 env = QProcessEnvironment.systemEnvironment() |
|
62 env.insert("HGENCODING", encoding) |
|
63 self.__server.setProcessEnvironment(env) |
|
64 self.__encoding = encoding |
58 self.__encoding = encoding |
65 |
59 |
66 def startServer(self): |
60 def startServer(self): |
67 """ |
61 """ |
68 Public method to start the command server. |
62 Public method to start the command server. |
69 |
63 |
70 @return tuple of flag indicating a successful start (boolean) and |
64 @return tuple of flag indicating a successful start (boolean) and |
71 an error message (string) in case of failure |
65 an error message (string) in case of failure |
72 """ |
66 """ |
|
67 self.__server = QProcess() |
|
68 self.__server.setWorkingDirectory(self.__repoPath) |
|
69 |
|
70 # connect signals |
|
71 self.__server.finished.connect(self.__serverFinished) |
|
72 |
|
73 # set the encoding for the server |
|
74 if self.__encoding: |
|
75 env = QProcessEnvironment.systemEnvironment() |
|
76 env.insert("HGENCODING", self.__encoding) |
|
77 self.__server.setProcessEnvironment(env) |
|
78 |
73 self.__server.start('hg', self.__serverArgs) |
79 self.__server.start('hg', self.__serverArgs) |
74 serverStarted = self.__server.waitForStarted() |
80 serverStarted = self.__server.waitForStarted() |
75 if not serverStarted: |
81 if not serverStarted: |
76 return False, self.trUtf8( |
82 return False, self.trUtf8( |
77 'The process {0} could not be started. ' |
83 'The process {0} could not be started. ' |
93 self.__server.terminate() |
99 self.__server.terminate() |
94 res = self.__server.waitForFinished(3000) |
100 res = self.__server.waitForFinished(3000) |
95 if not res: |
101 if not res: |
96 self.__server.kill() |
102 self.__server.kill() |
97 self.__server.waitForFinished(3000) |
103 self.__server.waitForFinished(3000) |
|
104 |
|
105 self.__started = False |
|
106 self.__server.finished.disconnect(self.__serverFinished) |
|
107 self.__server = None |
98 |
108 |
99 def restartServer(self): |
109 def restartServer(self): |
100 """ |
110 """ |
101 Public method to restart the command server. |
111 Public method to restart the command server. |
102 |
112 |