224 if not Utilities.isExecutable(exe): |
224 if not Utilities.isExecutable(exe): |
225 exe = "" |
225 exe = "" |
226 else: |
226 else: |
227 exe = Utilities.getExecutablePath(exe) |
227 exe = Utilities.getExecutablePath(exe) |
228 if exe: |
228 if exe: |
229 if versionCommand and versionStartsWith and versionPosition: |
229 if versionCommand and \ |
|
230 (versionStartsWith != "" or \ |
|
231 (versionRe is not None and versionRe != "")) and \ |
|
232 versionPosition: |
230 proc = QProcess() |
233 proc = QProcess() |
231 proc.setProcessChannelMode(QProcess.MergedChannels) |
234 proc.setProcessChannelMode(QProcess.MergedChannels) |
232 proc.start(exe, [versionCommand]) |
235 proc.start(exe, [versionCommand]) |
233 finished = proc.waitForFinished(10000) |
236 finished = proc.waitForFinished(10000) |
234 if finished: |
237 if finished: |
239 if versionRe is None: |
242 if versionRe is None: |
240 versionRe = "^%s" % re.escape(versionStartsWith) |
243 versionRe = "^%s" % re.escape(versionStartsWith) |
241 versionRe = re.compile(versionRe, re.UNICODE) |
244 versionRe = re.compile(versionRe, re.UNICODE) |
242 for line in output.splitlines(): |
245 for line in output.splitlines(): |
243 if versionRe.search(line): |
246 if versionRe.search(line): |
244 version = line.split()[versionPosition] |
247 try: |
245 if versionCleanup: |
248 version = line.split()[versionPosition] |
246 version = version[versionCleanup[0]:versionCleanup[1]] |
249 if versionCleanup: |
247 break |
250 version = \ |
|
251 version[versionCleanup[0]:versionCleanup[1]] |
|
252 break |
|
253 except IndexError: |
|
254 version = self.trUtf8("(unknown)") |
248 else: |
255 else: |
249 version = self.trUtf8("(not executable)") |
256 version = self.trUtf8("(not executable)") |
250 QTreeWidgetItem(itm, [exe, version]) |
257 QTreeWidgetItem(itm, [exe, version]) |
251 itm.setExpanded(True) |
258 itm.setExpanded(True) |
252 else: |
259 else: |