def __init__(self, formName, project, parent=None):
        """
        Constructor
        
        @param formName name of the file containing the form (string)
        @param project reference to the project object
        @param parent parent widget if the dialog (QWidget)
        """
        super(CreateDialogCodeDialog, self).__init__(parent)
        self.setupUi(self)

        self.okButton = self.buttonBox.button(QDialogButtonBox.Ok)

        self.slotsView.header().hide()

        self.project = project

        self.formFile = formName
        filename, ext = os.path.splitext(self.formFile)
        self.srcFile = '{0}{1}'.format(
            filename, self.project.getDefaultSourceExtension())

        self.slotsModel = QStandardItemModel()
        self.proxyModel = QSortFilterProxyModel()
        self.proxyModel.setDynamicSortFilter(True)
        self.proxyModel.setSourceModel(self.slotsModel)
        self.slotsView.setModel(self.proxyModel)

        # initialize some member variables
        self.__initError = False
        self.__module = None

        if os.path.exists(self.srcFile):
            vm = e5App().getObject("ViewManager")
            ed = vm.getOpenEditor(self.srcFile)
            if ed and not vm.checkDirty(ed):
                self.__initError = True
                return

            try:
                splitExt = os.path.splitext(self.srcFile)
                if len(splitExt) == 2:
                    exts = [splitExt[1]]
                else:
                    exts = None
                from Utilities import ModuleParser
                self.__module = ModuleParser.readModule(self.srcFile,
                                                        extensions=exts,
                                                        caching=False)
            except ImportError:
                pass

        if self.__module is not None:
            self.filenameEdit.setText(self.srcFile)

            classesList = []
            vagueClassesList = []
            for cls in list(self.__module.classes.values()):
                if not set(cls.super).isdisjoint(
                        CreateDialogCodeDialog.DialogClasses):
                    classesList.append(cls.name)
                else:
                    vagueClassesList.append(cls.name)
            classesList.sort()
            self.classNameCombo.addItems(classesList)
            if vagueClassesList:
                if classesList:
                    self.classNameCombo.addItem(
                        CreateDialogCodeDialog.Separator)
                self.classNameCombo.addItems(sorted(vagueClassesList))

        if os.path.exists(self.srcFile) and \
           self.__module is not None and \
           self.classNameCombo.count() == 0:
            self.__initError = True
            E5MessageBox.critical(
                self, self.tr("Create Dialog Code"),
                self.tr("""The file <b>{0}</b> exists but does not contain"""
                        """ any classes.""").format(self.srcFile))

        self.okButton.setEnabled(self.classNameCombo.count() > 0)

        self.__updateSlotsModel()
示例#2
0
 def __init__(self, formName, project, parent=None):
     """
     Constructor
     
     @param formName name of the file containing the form (string)
     @param project reference to the project object
     @param parent parent widget if the dialog (QWidget)
     """
     super(CreateDialogCodeDialog, self).__init__(parent)
     self.setupUi(self)
     
     self.okButton = self.buttonBox.button(QDialogButtonBox.Ok)
     
     self.slotsView.header().hide()
     
     self.project = project
     
     self.formFile = formName
     filename, ext = os.path.splitext(self.formFile)
     self.srcFile = '{0}{1}'.format(
         filename, self.project.getDefaultSourceExtension())
     
     self.slotsModel = QStandardItemModel()
     self.proxyModel = QSortFilterProxyModel()
     self.proxyModel.setDynamicSortFilter(True)
     self.proxyModel.setSourceModel(self.slotsModel)
     self.slotsView.setModel(self.proxyModel)
     
     # initialize some member variables
     self.__initError = False
     self.__module = None
     
     if os.path.exists(self.srcFile):
         vm = e5App().getObject("ViewManager")
         ed = vm.getOpenEditor(self.srcFile)
         if ed and not vm.checkDirty(ed):
             self.__initError = True
             return
         
         try:
             splitExt = os.path.splitext(self.srcFile)
             if len(splitExt) == 2:
                 exts = [splitExt[1]]
             else:
                 exts = None
             from Utilities import ModuleParser
             self.__module = ModuleParser.readModule(
                 self.srcFile, extensions=exts, caching=False)
         except ImportError:
             pass
     
     if self.__module is not None:
         self.filenameEdit.setText(self.srcFile)
         
         classesList = []
         vagueClassesList = []
         for cls in list(self.__module.classes.values()):
             if not set(cls.super).isdisjoint(
                     CreateDialogCodeDialog.DialogClasses):
                 classesList.append(cls.name)
             else:
                 vagueClassesList.append(cls.name)
         classesList.sort()
         self.classNameCombo.addItems(classesList)
         if vagueClassesList:
             if classesList:
                 self.classNameCombo.addItem(
                     CreateDialogCodeDialog.Separator)
             self.classNameCombo.addItems(sorted(vagueClassesList))
     
     if os.path.exists(self.srcFile) and \
        self.__module is not None and \
        self.classNameCombo.count() == 0:
         self.__initError = True
         E5MessageBox.critical(
             self,
             self.tr("Create Dialog Code"),
             self.tr(
                 """The file <b>{0}</b> exists but does not contain"""
                 """ any classes.""").format(self.srcFile))
     
     self.okButton.setEnabled(self.classNameCombo.count() > 0)
     
     self.__updateSlotsModel()
 def __init__(self, formName, project, parent = None):
     """
     Constructor
     
     @param formName name of the file containing the form (string or QString)
     @param project reference to the project object
     @param parent parent widget if the dialog (QWidget)
     """
     QDialog.__init__(self, parent)
     self.setupUi(self)
     
     self.okButton = self.buttonBox.button(QDialogButtonBox.Ok)
     
     self.slotsView.header().hide()
     
     self.project = project
     
     self.formFile = unicode(formName)
     filename, ext = os.path.splitext(self.formFile)
     self.srcFile = '%s%s' % (filename, self.project.getDefaultSourceExtension())
     
     self.slotsModel = QStandardItemModel()
     self.proxyModel = QSortFilterProxyModel()
     self.proxyModel.setDynamicSortFilter(True)
     self.proxyModel.setSourceModel(self.slotsModel)
     self.slotsView.setModel(self.proxyModel)
     
     self.clearFilterButton.setIcon(UI.PixmapCache.getIcon("clearLeft.png"))
     
     # initialize some member variables
     self.__initError = False
     self.__module = None
     
     if os.path.exists(self.srcFile):
         vm = e4App().getObject("ViewManager")
         ed = vm.getOpenEditor(self.srcFile)
         if ed and not vm.checkDirty(ed):
             self.__initError = True
             return
         
         try:
             self.__module = ModuleParser.readModule(self.srcFile, caching=False)
         except ImportError:
             pass
     
     if self.__module is not None:
         self.filenameEdit.setText(self.srcFile)
         
         classesList = QStringList()
         for cls in self.__module.classes.values():
             if not set(cls.super).isdisjoint(CreateDialogCodeDialog.DialogClasses):
                 classesList.append(cls.name)
         classesList.sort()
         self.classNameCombo.addItems(classesList)
     
     if os.path.exists(self.srcFile) and \
        self.__module is not None and \
        self.classNameCombo.count() == 0:
         self.__initError = True
         KQMessageBox.critical(None,
             self.trUtf8("Create Dialog Code"),
             self.trUtf8("""The file <b>%1</b> exists but does not contain"""
                         """ any classes.""").arg(self.srcFile),
             QMessageBox.StandardButtons(\
                 QMessageBox.Abort))
     
     self.okButton.setEnabled(self.classNameCombo.count() > 0)
     
     self.__updateSlotsModel()