eric6/Preferences/ProgramsDialog.py

branch
maintenance
changeset 8043
0acf98cd089a
parent 7924
8a96736d465e
parent 7923
91e843545d9a
child 8176
31965986ecd1
equal deleted inserted replaced
7991:866adc8c315b 8043:0acf98cd089a
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")
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 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)
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(
163 self.tr("Translation Extractor (Python, PySide2)"), 175 self.tr("Translation Extractor (Python, PySide2)"),
164 Utilities.generatePySideToolPath("pyside2-lupdate"), 176 Utilities.generatePySideToolPath("pyside2-lupdate", variant=2),
165 '-version', '', -1, versionRe='lupdate') 177 '-version', '', -1, versionRe='lupdate')
166 # 3.1b. Forms Compiler PySide2 178 # 3.1b. Forms Compiler PySide2
167 self.__createProgramEntry( 179 self.__createProgramEntry(
168 self.tr("Forms Compiler (Python, PySide2)"), 180 self.tr("Forms Compiler (Python, PySide2)"),
169 Utilities.generatePySideToolPath("pyside2-uic"), 181 Utilities.generatePySideToolPath("pyside2-uic", variant=2),
170 '--version', '', -1, versionRe='uic') 182 '--version', '', -1, versionRe='uic')
171 # 3.1c Resource Compiler PySide2 183 # 3.1c Resource Compiler PySide2
172 self.__createProgramEntry( 184 self.__createProgramEntry(
173 self.tr("Resource Compiler (Python, PySide2)"), 185 self.tr("Resource Compiler (Python, PySide2)"),
174 Utilities.generatePySideToolPath("pyside2-rcc"), 186 Utilities.generatePySideToolPath("pyside2-rcc", variant=2),
175 '-version', '', -1, versionRe='rcc') 187 '-version', '', -1, versionRe='rcc')
188 # 3.2 do the PySide5 programs
189 # 3.2a. Translation Extractor PySide6
190 self.__createProgramEntry(
191 self.tr("Translation Extractor (Python, PySide6)"),
192 Utilities.generatePySideToolPath("pyside6-lupdate", variant=6),
193 '-version', '', -1, versionRe='lupdate')
194 # 3.2b. Forms Compiler PySide6
195 self.__createProgramEntry(
196 self.tr("Forms Compiler (Python, PySide6)"),
197 Utilities.generatePySideToolPath("pyside6-uic", variant=6),
198 '--version', '', -1, versionRe='uic')
199 # 3.2c Resource Compiler PySide6
200 self.__createProgramEntry(
201 self.tr("Resource Compiler (Python, PySide6)"),
202 Utilities.generatePySideToolPath("pyside6-rcc", variant=6),
203 '--version', '', -1, versionRe='rcc')
176 204
177 # 4. do the Conda program(s) 205 # 4. do the Conda program(s)
178 exe = Preferences.getConda("CondaExecutable") 206 exe = Preferences.getConda("CondaExecutable")
179 if not exe: 207 if not exe:
180 exe = "conda" 208 exe = "conda"
301 329
302 self.__hasSearched = True 330 self.__hasSearched = True
303 331
304 def __createProgramEntry(self, description, exe, 332 def __createProgramEntry(self, description, exe,
305 versionCommand="", versionStartsWith="", 333 versionCommand="", versionStartsWith="",
306 versionPosition=0, version="", 334 versionPosition=None, version="",
307 versionCleanup=None, versionRe=None, 335 versionCleanup=None, versionRe=None,
308 exeModule=None): 336 exeModule=None):
309 """ 337 """
310 Private method to generate a program entry. 338 Private method to generate a program entry.
311 339
315 (str). If this is empty, the given version will be shown. 343 (str). If this is empty, the given version will be shown.
316 @param versionStartsWith start of line identifying version info 344 @param versionStartsWith start of line identifying version info
317 (string) 345 (string)
318 @param versionPosition index of part containing the version info 346 @param versionPosition index of part containing the version info
319 (integer) 347 (integer)
320 @keyparam version version string to show (string) 348 @param version version string to show (string)
321 @keyparam versionCleanup tuple of two integers giving string positions 349 @param versionCleanup tuple of two integers giving string positions
322 start and stop for the version string (tuple of integers) 350 start and stop for the version string (tuple of integers)
323 @keyparam versionRe regexp to determine the line identifying version 351 @param versionRe regexp to determine the line identifying version
324 info (string). Takes precedence over versionStartsWith. 352 info (string). Takes precedence over versionStartsWith.
325 @keyparam exeModule list of command line parameters to execute a module 353 @param exeModule list of command line parameters to execute a module
326 with the program given in exe (e.g. to execute a Python module) 354 with the program given in exe (e.g. to execute a Python module)
327 (list of str) 355 (list of str)
328 @return version string of detected or given version (string) 356 @return version string of detected or given version (string)
329 """ 357 """
330 itmList = self.programsList.findItems( 358 itmList = self.programsList.findItems(
345 exe = "" 373 exe = ""
346 else: 374 else:
347 exe = Utilities.getExecutablePath(exe) 375 exe = Utilities.getExecutablePath(exe)
348 if exe: 376 if exe:
349 available = True 377 available = True
350 if ( 378 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() 379 proc = QProcess()
357 proc.setProcessChannelMode(QProcess.MergedChannels) 380 proc.setProcessChannelMode(QProcess.MergedChannels)
358 if exeModule: 381 if exeModule:
359 args = exeModule[:] + [versionCommand] 382 args = exeModule[:] + [versionCommand]
360 else: 383 else:
372 "ModuleNotFoundError:" in output or 395 "ModuleNotFoundError:" in output or
373 proc.exitCode() != 0) 396 proc.exitCode() != 0)
374 ): 397 ):
375 version = self.tr("(module not found)") 398 version = self.tr("(module not found)")
376 available = False 399 available = False
400 elif not versionStartsWith and not versionRe:
401 # assume output is just one line
402 try:
403 version = (
404 output.strip().split()[versionPosition]
405 )
406 if versionCleanup:
407 version = version[
408 versionCleanup[0]:
409 versionCleanup[1]
410 ]
411 except IndexError:
412 version = self.tr("(unknown)")
413 available = False
377 else: 414 else:
378 if versionRe is None: 415 if versionRe is None:
379 versionRe = "^{0}".format( 416 versionRe = "^{0}".format(
380 re.escape(versionStartsWith)) 417 re.escape(versionStartsWith))
381 versionRe = re.compile(versionRe, re.UNICODE) 418 versionRe = re.compile(versionRe, re.UNICODE)

eric ide

mercurial