Project/CreateDialogCodeDialog.py

changeset 1869
3e34d5c362d9
parent 1862
b1498278335f
child 1870
2fb653ff32ec
equal deleted inserted replaced
1865:e2a956fcf5e7 1869:3e34d5c362d9
34 class CreateDialogCodeDialog(QDialog, Ui_CreateDialogCodeDialog): 34 class CreateDialogCodeDialog(QDialog, Ui_CreateDialogCodeDialog):
35 """ 35 """
36 Class implementing a dialog to generate code for a Qt4 dialog. 36 Class implementing a dialog to generate code for a Qt4 dialog.
37 """ 37 """
38 DialogClasses = {"QDialog", "QWidget", "QMainWindow", "QWizard"} 38 DialogClasses = {"QDialog", "QWidget", "QMainWindow", "QWizard"}
39 Separator = 25 * "="
39 40
40 def __init__(self, formName, project, parent=None): 41 def __init__(self, formName, project, parent=None):
41 """ 42 """
42 Constructor 43 Constructor
43 44
86 self.__module = ModuleParser.readModule(self.srcFile, extensions=exts, 87 self.__module = ModuleParser.readModule(self.srcFile, extensions=exts,
87 caching=False) 88 caching=False)
88 except ImportError: 89 except ImportError:
89 pass 90 pass
90 91
91 # NOTE: improve parsing by recording unrecognized classes and allowing the
92 # user to select one
93 if self.__module is not None: 92 if self.__module is not None:
94 self.filenameEdit.setText(self.srcFile) 93 self.filenameEdit.setText(self.srcFile)
95 94
96 classesList = [] 95 classesList = []
96 vagueClassesList = []
97 for cls in list(self.__module.classes.values()): 97 for cls in list(self.__module.classes.values()):
98 if not set(cls.super).isdisjoint(CreateDialogCodeDialog.DialogClasses): 98 if not set(cls.super).isdisjoint(CreateDialogCodeDialog.DialogClasses):
99 classesList.append(cls.name) 99 classesList.append(cls.name)
100 else:
101 vagueClassesList.append(cls.name)
100 classesList.sort() 102 classesList.sort()
101 self.classNameCombo.addItems(classesList) 103 self.classNameCombo.addItems(classesList)
104 if vagueClassesList:
105 if classesList:
106 self.classNameCombo.addItem(CreateDialogCodeDialog.Separator)
107 self.classNameCombo.addItems(sorted(vagueClassesList))
102 108
103 if os.path.exists(self.srcFile) and \ 109 if os.path.exists(self.srcFile) and \
104 self.__module is not None and \ 110 self.__module is not None and \
105 self.classNameCombo.count() == 0: 111 self.classNameCombo.count() == 0:
106 self.__initError = True 112 self.__initError = True
453 """ 459 """
454 Private slot to handle the activated signal of the classname combo. 460 Private slot to handle the activated signal of the classname combo.
455 461
456 @param index index of the activated item (integer) 462 @param index index of the activated item (integer)
457 """ 463 """
458 self.__updateSlotsModel() 464 if self.classNameCombo.currentText() == CreateDialogCodeDialog.Separator:
465 self.okButton.setEnabled(False)
466 self.filterEdit.clear()
467 self.slotsModel.clear()
468 self.slotsModel.setHorizontalHeaderLabels([""])
469 else:
470 self.okButton.setEnabled(True)
471 self.__updateSlotsModel()
459 472
460 def on_filterEdit_textChanged(self, text): 473 def on_filterEdit_textChanged(self, text):
461 """ 474 """
462 Private slot called, when thext of the filter edit has changed. 475 Private slot called, when thext of the filter edit has changed.
463 476

eric ide

mercurial