Preferences/ProgramsDialog.py

changeset 3010
befeff46ec0f
parent 2737
dbe5497851fa
child 3025
67064c71df21
child 3057
10516539f238
equal deleted inserted replaced
3009:bf5ae5d7477d 3010:befeff46ec0f
36 self.setupUi(self) 36 self.setupUi(self)
37 self.setObjectName("ProgramsDialog") 37 self.setObjectName("ProgramsDialog")
38 38
39 self.__hasSearched = False 39 self.__hasSearched = False
40 40
41 self.programsList.headerItem().setText(self.programsList.columnCount(), "") 41 self.programsList.headerItem().setText(
42 42 self.programsList.columnCount(), "")
43 self.searchButton = \ 43
44 self.buttonBox.addButton(self.trUtf8("Search"), QDialogButtonBox.ActionRole) 44 self.searchButton = self.buttonBox.addButton(
45 self.searchButton.setToolTip(self.trUtf8("Press to search for programs")) 45 self.trUtf8("Search"), QDialogButtonBox.ActionRole)
46 self.searchButton.setToolTip(
47 self.trUtf8("Press to search for programs"))
46 48
47 def show(self): 49 def show(self):
48 """ 50 """
49 Public slot to show the dialog. 51 Public slot to show the dialog.
50 """ 52 """
78 # 1a. Translation Converter 80 # 1a. Translation Converter
79 exe = Utilities.isWindowsPlatform() and \ 81 exe = Utilities.isWindowsPlatform() and \
80 "{0}.exe".format(Utilities.generateQtToolName("lrelease")) or \ 82 "{0}.exe".format(Utilities.generateQtToolName("lrelease")) or \
81 Utilities.generateQtToolName("lrelease") 83 Utilities.generateQtToolName("lrelease")
82 exe = os.path.join(Utilities.getQtBinariesPath(), exe) 84 exe = os.path.join(Utilities.getQtBinariesPath(), exe)
83 version = self.__createProgramEntry(self.trUtf8("Translation Converter (Qt)"), 85 version = self.__createProgramEntry(
84 exe, '-version', 'lrelease', -1) 86 self.trUtf8("Translation Converter (Qt)"), exe, '-version',
87 'lrelease', -1)
85 # 1b. Qt Designer 88 # 1b. Qt Designer
86 if Utilities.isWindowsPlatform(): 89 if Utilities.isWindowsPlatform():
87 exe = os.path.join(Utilities.getQtBinariesPath(), 90 exe = os.path.join(Utilities.getQtBinariesPath(),
88 "{0}.exe".format(Utilities.generateQtToolName("designer"))) 91 "{0}.exe".format(Utilities.generateQtToolName("designer")))
89 elif Utilities.isMacPlatform(): 92 elif Utilities.isMacPlatform():
90 exe = Utilities.getQtMacBundle("designer") 93 exe = Utilities.getQtMacBundle("designer")
91 else: 94 else:
92 exe = os.path.join(Utilities.getQtBinariesPath(), 95 exe = os.path.join(Utilities.getQtBinariesPath(),
93 Utilities.generateQtToolName("designer")) 96 Utilities.generateQtToolName("designer"))
94 self.__createProgramEntry(self.trUtf8("Qt Designer"), exe, version=version) 97 self.__createProgramEntry(
98 self.trUtf8("Qt Designer"), exe, version=version)
95 # 1c. Qt Linguist 99 # 1c. Qt Linguist
96 if Utilities.isWindowsPlatform(): 100 if Utilities.isWindowsPlatform():
97 exe = os.path.join(Utilities.getQtBinariesPath(), 101 exe = os.path.join(Utilities.getQtBinariesPath(),
98 "{0}.exe".format(Utilities.generateQtToolName("linguist"))) 102 "{0}.exe".format(Utilities.generateQtToolName("linguist")))
99 elif Utilities.isMacPlatform(): 103 elif Utilities.isMacPlatform():
100 exe = Utilities.getQtMacBundle("linguist") 104 exe = Utilities.getQtMacBundle("linguist")
101 else: 105 else:
102 exe = os.path.join(Utilities.getQtBinariesPath(), 106 exe = os.path.join(Utilities.getQtBinariesPath(),
103 Utilities.generateQtToolName("linguist")) 107 Utilities.generateQtToolName("linguist"))
104 self.__createProgramEntry(self.trUtf8("Qt Linguist"), exe, version=version) 108 self.__createProgramEntry(
109 self.trUtf8("Qt Linguist"), exe, version=version)
105 # 1d. Qt Assistant 110 # 1d. Qt Assistant
106 if Utilities.isWindowsPlatform(): 111 if Utilities.isWindowsPlatform():
107 exe = os.path.join(Utilities.getQtBinariesPath(), 112 exe = os.path.join(Utilities.getQtBinariesPath(),
108 "{0}.exe".format(Utilities.generateQtToolName("assistant"))) 113 "{0}.exe".format(Utilities.generateQtToolName("assistant")))
109 elif Utilities.isMacPlatform(): 114 elif Utilities.isMacPlatform():
110 exe = Utilities.getQtMacBundle("assistant") 115 exe = Utilities.getQtMacBundle("assistant")
111 else: 116 else:
112 exe = os.path.join(Utilities.getQtBinariesPath(), 117 exe = os.path.join(Utilities.getQtBinariesPath(),
113 Utilities.generateQtToolName("assistant")) 118 Utilities.generateQtToolName("assistant"))
114 self.__createProgramEntry(self.trUtf8("Qt Assistant"), exe, version=version) 119 self.__createProgramEntry(
120 self.trUtf8("Qt Assistant"), exe, version=version)
115 121
116 # 2. do the PyQt programs 122 # 2. do the PyQt programs
117 # 2a. Translation Extractor PyQt4 123 # 2a. Translation Extractor PyQt4
118 self.__createProgramEntry(self.trUtf8("Translation Extractor (Python, PyQt4)"), 124 self.__createProgramEntry(
125 self.trUtf8("Translation Extractor (Python, PyQt4)"),
119 Utilities.isWindowsPlatform() and "pylupdate4.exe" or "pylupdate4", 126 Utilities.isWindowsPlatform() and "pylupdate4.exe" or "pylupdate4",
120 '-version', 'pylupdate', -1) 127 '-version', 'pylupdate', -1)
121 # 2b. Forms Compiler PyQt4 128 # 2b. Forms Compiler PyQt4
122 self.__createProgramEntry(self.trUtf8("Forms Compiler (Python, PyQt4)"), 129 self.__createProgramEntry(
130 self.trUtf8("Forms Compiler (Python, PyQt4)"),
123 Utilities.isWindowsPlatform() and "pyuic4.bat" or "pyuic4", 131 Utilities.isWindowsPlatform() and "pyuic4.bat" or "pyuic4",
124 '--version', 'Python User', 4) 132 '--version', 'Python User', 4)
125 # 2c. Resource Compiler PyQt4 133 # 2c. Resource Compiler PyQt4
126 self.__createProgramEntry(self.trUtf8("Resource Compiler (Python, PyQt4)"), 134 self.__createProgramEntry(
135 self.trUtf8("Resource Compiler (Python, PyQt4)"),
127 Utilities.isWindowsPlatform() and "pyrcc4.exe" or "pyrcc4", 136 Utilities.isWindowsPlatform() and "pyrcc4.exe" or "pyrcc4",
128 '-version', 'Resource Compiler', -1) 137 '-version', 'Resource Compiler', -1)
129 # 2d. Translation Extractor PyQt5 138 # 2d. Translation Extractor PyQt5
130 self.__createProgramEntry(self.trUtf8("Translation Extractor (Python, PyQt5)"), 139 self.__createProgramEntry(
140 self.trUtf8("Translation Extractor (Python, PyQt5)"),
131 Utilities.isWindowsPlatform() and "pylupdate5.exe" or "pylupdate5", 141 Utilities.isWindowsPlatform() and "pylupdate5.exe" or "pylupdate5",
132 '-version', 'pylupdate', -1) 142 '-version', 'pylupdate', -1)
133 # 2e. Forms Compiler PyQt4 143 # 2e. Forms Compiler PyQt4
134 self.__createProgramEntry(self.trUtf8("Forms Compiler (Python, PyQt5)"), 144 self.__createProgramEntry(
145 self.trUtf8("Forms Compiler (Python, PyQt5)"),
135 Utilities.isWindowsPlatform() and "pyuic5.bat" or "pyuic5", 146 Utilities.isWindowsPlatform() and "pyuic5.bat" or "pyuic5",
136 '--version', 'Python User', 4) 147 '--version', 'Python User', 4)
137 # 2f. Resource Compiler PyQt4 148 # 2f. Resource Compiler PyQt4
138 self.__createProgramEntry(self.trUtf8("Resource Compiler (Python, PyQt5)"), 149 self.__createProgramEntry(
150 self.trUtf8("Resource Compiler (Python, PyQt5)"),
139 Utilities.isWindowsPlatform() and "pyrcc5.exe" or "pyrcc5", 151 Utilities.isWindowsPlatform() and "pyrcc5.exe" or "pyrcc5",
140 '-version', 'Resource Compiler', -1) 152 '-version', 'Resource Compiler', -1)
141 153
142 # 3. do the PySide programs 154 # 3. do the PySide programs
143 # 3a. Translation Extractor PySide 155 # 3a. Translation Extractor PySide
144 self.__createProgramEntry(self.trUtf8("Translation Extractor (Python, PySide)"), 156 self.__createProgramEntry(
157 self.trUtf8("Translation Extractor (Python, PySide)"),
145 Utilities.generatePySideToolPath("pyside-lupdate"), 158 Utilities.generatePySideToolPath("pyside-lupdate"),
146 '-version', '', -1, versionRe='lupdate') 159 '-version', '', -1, versionRe='lupdate')
147 # 3b. Forms Compiler PySide 160 # 3b. Forms Compiler PySide
148 self.__createProgramEntry(self.trUtf8("Forms Compiler (Python, PySide)"), 161 self.__createProgramEntry(
162 self.trUtf8("Forms Compiler (Python, PySide)"),
149 Utilities.generatePySideToolPath("pyside-uic"), 163 Utilities.generatePySideToolPath("pyside-uic"),
150 '--version', 'PySide User', 5, versionCleanup=(0, -1)) 164 '--version', 'PySide User', 5, versionCleanup=(0, -1))
151 # 3.c Resource Compiler PySide 165 # 3.c Resource Compiler PySide
152 self.__createProgramEntry(self.trUtf8("Resource Compiler (Python, PySide)"), 166 self.__createProgramEntry(
167 self.trUtf8("Resource Compiler (Python, PySide)"),
153 Utilities.generatePySideToolPath("pyside-rcc"), 168 Utilities.generatePySideToolPath("pyside-rcc"),
154 '-version', 'Resource Compiler', -1) 169 '-version', 'Resource Compiler', -1)
155 170
156 # 4. do the Ruby programs 171 # 4. do the Ruby programs
157 # 4a. Forms Compiler for Qt4 172 # 4a. Forms Compiler for Qt4
183 except AttributeError: 198 except AttributeError:
184 version = self.trUtf8("(unknown)") 199 version = self.trUtf8("(unknown)")
185 except (ImportError, AttributeError, OSError): 200 except (ImportError, AttributeError, OSError):
186 text = "enchant" 201 text = "enchant"
187 version = "" 202 version = ""
188 self.__createEntry(self.trUtf8("Spell Checker - PyEnchant"), text, version) 203 self.__createEntry(
204 self.trUtf8("Spell Checker - PyEnchant"), text, version)
189 205
190 # 7. do the pygments entry 206 # 7. do the pygments entry
191 try: 207 try:
192 import pygments 208 import pygments
193 try: 209 try:
199 except AttributeError: 215 except AttributeError:
200 version = self.trUtf8("(unknown)") 216 version = self.trUtf8("(unknown)")
201 except (ImportError, AttributeError, OSError): 217 except (ImportError, AttributeError, OSError):
202 text = "pygments" 218 text = "pygments"
203 version = "" 219 version = ""
204 self.__createEntry(self.trUtf8("Source Highlighter - Pygments"), text, version) 220 self.__createEntry(
221 self.trUtf8("Source Highlighter - Pygments"), text, version)
205 222
206 # do the plugin related programs 223 # do the plugin related programs
207 pm = e5App().getObject("PluginManager") 224 pm = e5App().getObject("PluginManager")
208 for info in pm.getPluginExeDisplayData(): 225 for info in pm.getPluginExeDisplayData():
209 if info["programEntry"]: 226 if info["programEntry"]:
235 """ 252 """
236 Private method to generate a program entry. 253 Private method to generate a program entry.
237 254
238 @param description descriptive text (string) 255 @param description descriptive text (string)
239 @param exe name of the executable program (string) 256 @param exe name of the executable program (string)
240 @param versionCommand command line switch to get the version info (string) 257 @param versionCommand command line switch to get the version info
241 if this is empty, the given version will be shown. 258 (string) if this is empty, the given version will be shown.
242 @param versionStartsWith start of line identifying version info (string) 259 @param versionStartsWith start of line identifying version info
243 @param versionPosition index of part containing the version info (integer) 260 (string)
261 @param versionPosition index of part containing the version info
262 (integer)
244 @keyparam version version string to show (string) 263 @keyparam version version string to show (string)
245 @keyparam versionCleanup tuple of two integers giving string positions 264 @keyparam versionCleanup tuple of two integers giving string positions
246 start and stop for the version string (tuple of integers) 265 start and stop for the version string (tuple of integers)
247 @keyparam versionRe regexp to determine the line identifying version 266 @keyparam versionRe regexp to determine the line identifying version
248 info (string). Takes precedence over versionStartsWith. 267 info (string). Takes precedence over versionStartsWith.
249 @return version string of detected or given version (string) 268 @return version string of detected or given version (string)
250 """ 269 """
251 itmList = self.programsList.findItems(description, Qt.MatchCaseSensitive) 270 itmList = self.programsList.findItems(
271 description, Qt.MatchCaseSensitive)
252 if itmList: 272 if itmList:
253 itm = itmList[0] 273 itm = itmList[0]
254 else: 274 else:
255 itm = QTreeWidgetItem(self.programsList, [description]) 275 itm = QTreeWidgetItem(self.programsList, [description])
256 font = itm.font(0) 276 font = itm.font(0)
277 output = \ 297 output = \
278 str(proc.readAllStandardOutput(), 298 str(proc.readAllStandardOutput(),
279 Preferences.getSystem("IOEncoding"), 299 Preferences.getSystem("IOEncoding"),
280 'replace') 300 'replace')
281 if versionRe is None: 301 if versionRe is None:
282 versionRe = "^{0}".format(re.escape(versionStartsWith)) 302 versionRe = "^{0}".format(
303 re.escape(versionStartsWith))
283 versionRe = re.compile(versionRe, re.UNICODE) 304 versionRe = re.compile(versionRe, re.UNICODE)
284 for line in output.splitlines(): 305 for line in output.splitlines():
285 if versionRe.search(line): 306 if versionRe.search(line):
286 try: 307 try:
287 version = line.split()[versionPosition] 308 version = line.split()[versionPosition]
288 if versionCleanup: 309 if versionCleanup:
289 version = \ 310 version = version[
290 version[versionCleanup[0]:versionCleanup[1]] 311 versionCleanup[0]:versionCleanup[1]
312 ]
291 break 313 break
292 except IndexError: 314 except IndexError:
293 version = self.trUtf8("(unknown)") 315 version = self.trUtf8("(unknown)")
294 else: 316 else:
295 version = self.trUtf8("(not executable)") 317 version = self.trUtf8("(not executable)")

eric ide

mercurial