eric6/Preferences/ProgramsDialog.py

changeset 7907
7991ea245c20
parent 7900
72b88fb20261
child 7911
4621c9082a43
equal deleted inserted replaced
7906:0af028b93cb3 7907:7991ea245c20
84 header = self.programsList.header() 84 header = self.programsList.header()
85 header.setSortIndicator(0, Qt.AscendingOrder) 85 header.setSortIndicator(0, Qt.AscendingOrder)
86 header.setSortIndicatorShown(False) 86 header.setSortIndicatorShown(False)
87 87
88 with E5OverrideCursor(): 88 with E5OverrideCursor():
89 # 1. do the Qt5 programs 89 # 1. do the Qt programs
90 # 1a. Translation Converter 90 # 1a. Translation Converter
91 exe = ( 91 exe = (
92 Utilities.isWindowsPlatform() and 92 Utilities.isWindowsPlatform() and
93 "{0}.exe".format(Utilities.generateQtToolName("lrelease")) or 93 "{0}.exe".format(Utilities.generateQtToolName("lrelease")) or
94 Utilities.generateQtToolName("lrelease") 94 Utilities.generateQtToolName("lrelease")
153 # 2.1c. Resource Compiler PyQt5 153 # 2.1c. Resource Compiler PyQt5
154 self.__createProgramEntry( 154 self.__createProgramEntry(
155 self.tr("Resource Compiler (Python, PyQt5)"), 155 self.tr("Resource Compiler (Python, PyQt5)"),
156 Utilities.generatePyQtToolPath("pyrcc5"), 156 Utilities.generatePyQtToolPath("pyrcc5"),
157 '-version', '', -1, versionRe='Resource Compiler|pyrcc5') 157 '-version', '', -1, versionRe='Resource Compiler|pyrcc5')
158
159 # 2.2 do the PyQt6 programs
160 # 2.2a. Translation Extractor PyQt6
161 self.__createProgramEntry(
162 self.tr("Translation Extractor (Python, PyQt6)"),
163 Utilities.generatePyQtToolPath("pylupdate6"),
164 '--version', versionPosition=0)
165 # 2.2b. Forms Compiler PyQt6
166 self.__createProgramEntry(
167 self.tr("Forms Compiler (Python, PyQt6)"),
168 Utilities.generatePyQtToolPath("pyuic6"),
169 '--version', versionPosition=0)
158 170
159 # 3. do the PySide programs 171 # 3. do the PySide programs
160 # 3.1 do the PySide2 programs 172 # 3.1 do the PySide2 programs
161 # 3.1a. Translation Extractor PySide2 173 # 3.1a. Translation Extractor PySide2
162 self.__createProgramEntry( 174 self.__createProgramEntry(
301 313
302 self.__hasSearched = True 314 self.__hasSearched = True
303 315
304 def __createProgramEntry(self, description, exe, 316 def __createProgramEntry(self, description, exe,
305 versionCommand="", versionStartsWith="", 317 versionCommand="", versionStartsWith="",
306 versionPosition=0, version="", 318 versionPosition=None, version="",
307 versionCleanup=None, versionRe=None, 319 versionCleanup=None, versionRe=None,
308 exeModule=None): 320 exeModule=None):
309 """ 321 """
310 Private method to generate a program entry. 322 Private method to generate a program entry.
311 323
345 exe = "" 357 exe = ""
346 else: 358 else:
347 exe = Utilities.getExecutablePath(exe) 359 exe = Utilities.getExecutablePath(exe)
348 if exe: 360 if exe:
349 available = True 361 available = True
350 if ( 362 if versionCommand and versionPosition is not None:
351 versionCommand and
352 (versionStartsWith != "" or
353 (versionRe is not None and versionRe != "")) and
354 versionPosition
355 ):
356 proc = QProcess() 363 proc = QProcess()
357 proc.setProcessChannelMode(QProcess.MergedChannels) 364 proc.setProcessChannelMode(QProcess.MergedChannels)
358 if exeModule: 365 if exeModule:
359 args = exeModule[:] + [versionCommand] 366 args = exeModule[:] + [versionCommand]
360 else: 367 else:
372 "ModuleNotFoundError:" in output or 379 "ModuleNotFoundError:" in output or
373 proc.exitCode() != 0) 380 proc.exitCode() != 0)
374 ): 381 ):
375 version = self.tr("(module not found)") 382 version = self.tr("(module not found)")
376 available = False 383 available = False
384 elif not versionStartsWith and not versionRe:
385 # assume output is just one line
386 try:
387 version = (
388 output.strip().split()[versionPosition]
389 )
390 if versionCleanup:
391 version = version[
392 versionCleanup[0]:
393 versionCleanup[1]
394 ]
395 except IndexError:
396 version = self.tr("(unknown)")
397 available = False
377 else: 398 else:
378 if versionRe is None: 399 if versionRe is None:
379 versionRe = "^{0}".format( 400 versionRe = "^{0}".format(
380 re.escape(versionStartsWith)) 401 re.escape(versionStartsWith))
381 versionRe = re.compile(versionRe, re.UNICODE) 402 versionRe = re.compile(versionRe, re.UNICODE)

eric ide

mercurial