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 |