Project/CreateDialogCodeDialog.py

changeset 427
6af5d12cfecb
parent 253
3ccdf551bde7
child 535
4b00d7336e19
equal deleted inserted replaced
426:161992758137 427:6af5d12cfecb
49 49
50 self.project = project 50 self.project = project
51 51
52 self.formFile = formName 52 self.formFile = formName
53 filename, ext = os.path.splitext(self.formFile) 53 filename, ext = os.path.splitext(self.formFile)
54 self.srcFile = '%s%s' % (filename, self.project.getDefaultSourceExtension()) 54 self.srcFile = '{0}{1}'.format(filename, self.project.getDefaultSourceExtension())
55 55
56 self.slotsModel = QStandardItemModel() 56 self.slotsModel = QStandardItemModel()
57 self.proxyModel = QSortFilterProxyModel() 57 self.proxyModel = QSortFilterProxyModel()
58 self.proxyModel.setDynamicSortFilter(True) 58 self.proxyModel.setDynamicSortFilter(True)
59 self.proxyModel.setSourceModel(self.slotsModel) 59 self.proxyModel.setSourceModel(self.slotsModel)
156 for meth in list(cls.methods.values()): 156 for meth in list(cls.methods.values()):
157 if meth.name.startswith("on_"): 157 if meth.name.startswith("on_"):
158 if meth.pyqtSignature is not None: 158 if meth.pyqtSignature is not None:
159 sig = ", ".join([bytes(QMetaObject.normalizedType(t)).decode() \ 159 sig = ", ".join([bytes(QMetaObject.normalizedType(t)).decode() \
160 for t in meth.pyqtSignature.split(",")]) 160 for t in meth.pyqtSignature.split(",")])
161 signatures.append("%s(%s)" % (meth.name, sig)) 161 signatures.append("{0}({1})".format(meth.name, sig))
162 else: 162 else:
163 signatures.append(meth.name) 163 signatures.append(meth.name)
164 return signatures 164 return signatures
165 165
166 def __mapType(self, type_): 166 def __mapType(self, type_):
206 if not name: 206 if not name:
207 continue 207 continue
208 208
209 metaObject = obj.metaObject() 209 metaObject = obj.metaObject()
210 className = metaObject.className() 210 className = metaObject.className()
211 itm = QStandardItem("%s (%s)" % (name, className)) 211 itm = QStandardItem("{0} ({1})".format(name, className))
212 self.slotsModel.appendRow(itm) 212 self.slotsModel.appendRow(itm)
213 for index in range(metaObject.methodCount()): 213 for index in range(metaObject.methodCount()):
214 metaMethod = metaObject.method(index) 214 metaMethod = metaObject.method(index)
215 if metaMethod.methodType() == QMetaMethod.Signal: 215 if metaMethod.methodType() == QMetaMethod.Signal:
216 itm2 = QStandardItem("on_%s_%s" % (name, metaMethod.signature())) 216 itm2 = QStandardItem("on_{0}_{1}".format(
217 name, metaMethod.signature()))
217 itm.appendRow(itm2) 218 itm.appendRow(itm2)
218 if self.__module is not None: 219 if self.__module is not None:
219 method = "on_%s_%s" % \ 220 method = "on_{0}_{1}".format(
220 (name, metaMethod.signature().split("(")[0]) 221 name, metaMethod.signature().split("(")[0])
221 method2 = "%s(%s)" % (method, 222 method2 = "{0}({1})".format(method,
222 ", ".join([self.__mapType(t) 223 ", ".join([self.__mapType(t)
223 for t in metaMethod.parameterTypes()])) 224 for t in metaMethod.parameterTypes()]))
224 225
225 if method2 in signatureList or method in signatureList: 226 if method2 in signatureList or method in signatureList:
226 itm2.setFlags(Qt.ItemFlags(Qt.ItemIsEnabled)) 227 itm2.setFlags(Qt.ItemFlags(Qt.ItemIsEnabled))
234 235
235 parameterNames = metaMethod.parameterNames() 236 parameterNames = metaMethod.parameterNames()
236 if parameterNames: 237 if parameterNames:
237 for index in range(len(parameterNames)): 238 for index in range(len(parameterNames)):
238 if not parameterNames[index]: 239 if not parameterNames[index]:
239 parameterNames[index] = QByteArray("p%d" % index) 240 parameterNames[index] = \
241 QByteArray("p{0:d}".format(index))
240 methNamesSig = \ 242 methNamesSig = \
241 ", ".join([bytes(n).decode() for n in parameterNames]) 243 ", ".join([bytes(n).decode() for n in parameterNames])
242 244
243 if methNamesSig: 245 if methNamesSig:
244 pythonSignature = "on_%s_%s(self, %s)" % \ 246 pythonSignature = "on_{0}_{1}(self, {2})".format(
245 (name, 247 name,
246 metaMethod.signature().split("(")[0], 248 metaMethod.signature().split("(")[0],
247 methNamesSig 249 methNamesSig)
248 )
249 else: 250 else:
250 pythonSignature = "on_%s_%s(self)" % \ 251 pythonSignature = "on_{0}_{1}(self)".format(
251 (name, 252 name,
252 metaMethod.signature().split("(")[0] 253 metaMethod.signature().split("(")[0])
253 )
254 itm2.setData(pyqtSignature, pyqtSignatureRole) 254 itm2.setData(pyqtSignature, pyqtSignatureRole)
255 itm2.setData(pythonSignature, pythonSignatureRole) 255 itm2.setData(pythonSignature, pythonSignatureRole)
256 256
257 itm2.setFlags(Qt.ItemFlags(\ 257 itm2.setFlags(Qt.ItemFlags(\
258 Qt.ItemIsUserCheckable | \ 258 Qt.ItemIsUserCheckable | \
338 try: 338 try:
339 srcFile = open(self.srcFile, 'r', encoding = "utf-8") 339 srcFile = open(self.srcFile, 'r', encoding = "utf-8")
340 sourceImpl = srcFile.readlines() 340 sourceImpl = srcFile.readlines()
341 srcFile.close() 341 srcFile.close()
342 if not sourceImpl[-1].endswith("\n"): 342 if not sourceImpl[-1].endswith("\n"):
343 sourceImpl[-1] = "%s%s" % (sourceImpl[-1], "\n") 343 sourceImpl[-1] = "{0}{1}".format(sourceImpl[-1], "\n")
344 except IOError as why: 344 except IOError as why:
345 QMessageBox.critical(self, 345 QMessageBox.critical(self,
346 self.trUtf8("Code Generation"), 346 self.trUtf8("Code Generation"),
347 self.trUtf8("""<p>Could not open the source file "{0}".</p>""" 347 self.trUtf8("""<p>Could not open the source file "{0}".</p>"""
348 """<p>Reason: {1}</p>""")\ 348 """<p>Reason: {1}</p>""")\
371 topItem = self.slotsModel.item(row) 371 topItem = self.slotsModel.item(row)
372 for childRow in range(topItem.rowCount()): 372 for childRow in range(topItem.rowCount()):
373 child = topItem.child(childRow) 373 child = topItem.child(childRow)
374 if child.checkState() and \ 374 if child.checkState() and \
375 child.flags() & Qt.ItemFlags(Qt.ItemIsUserCheckable): 375 child.flags() & Qt.ItemFlags(Qt.ItemIsUserCheckable):
376 slotsCode.append('%s\n' % indentStr) 376 slotsCode.append('{0}\n'.format(indentStr))
377 slotsCode.append('%s@pyqtSlot(%s)\n' % \ 377 slotsCode.append('{0}@pyqtSlot({1})\n'.format(
378 (indentStr, child.data(pyqtSignatureRole))) 378 indentStr, child.data(pyqtSignatureRole)))
379 slotsCode.append('%sdef %s:\n' % \ 379 slotsCode.append('{0}def {1}:\n'.format(
380 (indentStr, child.data(pythonSignatureRole))) 380 indentStr, child.data(pythonSignatureRole)))
381 slotsCode.append('%s"""\n' % (indentStr * 2,)) 381 slotsCode.append('{0}"""\n'.format(indentStr * 2))
382 slotsCode.append('%sSlot documentation goes here.\n' % \ 382 slotsCode.append('{0}Slot documentation goes here.\n'.format(
383 (indentStr * 2,)) 383 indentStr * 2))
384 slotsCode.append('%s"""\n' % (indentStr * 2,)) 384 slotsCode.append('{0}"""\n'.format(indentStr * 2))
385 slotsCode.append('%s# %s: not implemented yet\n' % \ 385 slotsCode.append('{0}# {1}: not implemented yet\n'.format(
386 (indentStr * 2, "TODO")) 386 indentStr * 2, "TODO"))
387 slotsCode.append('%sraise NotImplementedError\n' % (indentStr * 2,)) 387 slotsCode.append('{0}raise NotImplementedError\n'.format(
388 indentStr * 2))
388 389
389 if appendAtIndex == -1: 390 if appendAtIndex == -1:
390 sourceImpl.extend(slotsCode) 391 sourceImpl.extend(slotsCode)
391 else: 392 else:
392 sourceImpl[appendAtIndex:appendAtIndex] = slotsCode 393 sourceImpl[appendAtIndex:appendAtIndex] = slotsCode

eric ide

mercurial