Project/CreateDialogCodeDialog.py

changeset 6661
19fcbb7be3da
parent 6645
ad476851d7e0
diff -r fd767acf3e98 -r 19fcbb7be3da Project/CreateDialogCodeDialog.py
--- a/Project/CreateDialogCodeDialog.py	Fri Jan 18 19:01:33 2019 +0100
+++ b/Project/CreateDialogCodeDialog.py	Fri Jan 18 19:45:25 2019 +0100
@@ -13,15 +13,14 @@
 except NameError:
     pass
 
+import sys
 import os
 import json
-import xml.etree.ElementTree
 
-from PyQt5.QtCore import QMetaObject, QByteArray, QRegExp, Qt, pyqtSlot, \
-    QMetaMethod, QSortFilterProxyModel, QProcess, QProcessEnvironment
+from PyQt5.QtCore import pyqtSlot, Qt, QMetaObject, QRegExp, \
+    QSortFilterProxyModel, QProcess, QProcessEnvironment
 from PyQt5.QtGui import QStandardItemModel, QBrush, QStandardItem
-from PyQt5.QtWidgets import QWidget, QDialog, QDialogButtonBox, QAction
-from PyQt5 import uic
+from PyQt5.QtWidgets import QDialog, QDialogButtonBox
 
 
 from E5Gui.E5Application import e5App
@@ -32,8 +31,6 @@
 
 from eric6config import getConfig
 
-from Globals import qVersionTuple
-
 
 pyqtSignatureRole = Qt.UserRole + 1
 pythonSignatureRole = Qt.UserRole + 2
@@ -162,6 +159,9 @@
         interpreter = venvManager.getVirtualenvInterpreter(venvName)
         execPath = venvManager.getVirtualenvExecPath(venvName)
         
+        if not interpreter:
+            interpreter = sys.executable
+        
         env = QProcessEnvironment.systemEnvironment()
         if execPath:
             if env.contains("PATH"):
@@ -215,10 +215,9 @@
         
         return uicText, ok
     
-    def __objectNameExternal(self):
+    def __objectName(self):
         """
-        Private method to get the object name of a form via an external
-        interpreter.
+        Private method to get the object name of a form.
         
         @return object name
         @rtype str
@@ -231,34 +230,9 @@
         
         return objectName
     
-    def __objectName(self):
-        """
-        Private method to get the object name of a form.
-        
-        @return object name
-        @rtype str
+    def __className(self):
         """
-        if self.project.getDebugProperty("VIRTUALENV"):
-            return self.__objectNameExternal()
-        else:
-            try:
-                dlg = uic.loadUi(
-                    self.formFile, package=self.project.getProjectPath())
-                return dlg.objectName()
-            except (AttributeError, ImportError,
-                    xml.etree.ElementTree.ParseError) as err:
-                E5MessageBox.critical(
-                    self,
-                    self.tr("uic error"),
-                    self.tr(
-                        """<p>There was an error loading the form <b>{0}</b>"""
-                        """.</p><p>{1}</p>""").format(self.formFile, str(err)))
-                return ""
-    
-    def __classNameExternal(self):
-        """
-        Private method to get the class name of a form via an external
-        interpreter.
+        Private method to get the class name of a form.
         
         @return class name
         @rtype str
@@ -271,30 +245,6 @@
         
         return className
     
-    def __className(self):
-        """
-        Private method to get the class name of a form.
-        
-        @return class name
-        @rtype str
-        """
-        if self.project.getDebugProperty("VIRTUALENV"):
-            return self.__classNameExternal()
-        else:
-            try:
-                dlg = uic.loadUi(
-                    self.formFile, package=self.project.getProjectPath())
-                return dlg.metaObject().className()
-            except (AttributeError, ImportError,
-                    xml.etree.ElementTree.ParseError) as err:
-                E5MessageBox.critical(
-                    self,
-                    self.tr("uic error"),
-                    self.tr(
-                        """<p>There was an error loading the form <b>{0}</b>"""
-                        """.</p><p>{1}</p>""").format(self.formFile, str(err)))
-                return ""
-    
     def __signatures(self):
         """
         Private slot to get the signatures.
@@ -346,11 +296,12 @@
         
         return mapped
     
-    def __updateSlotsModelExternal(self):
+    def __updateSlotsModel(self):
         """
-        Private slot to update the slots tree display getting the data via an
-        external interpreter.
+        Private slot to update the slots tree display.
         """
+        self.filterEdit.clear()
+        
         output, ok = self.__runUicLoadUi("signatures")
         if ok and output:
             objectsList = json.loads(output.strip())
@@ -396,147 +347,6 @@
                     itm2.setCheckState(Qt.Unchecked)
             
             self.slotsView.sortByColumn(0, Qt.AscendingOrder)
-    
-    def __updateSlotsModel(self):
-        """
-        Private slot to update the slots tree display.
-        """
-        self.filterEdit.clear()
-        
-        if self.project.getDebugProperty("VIRTUALENV"):
-            self.__updateSlotsModelExternal()
-        else:
-            try:
-                dlg = uic.loadUi(
-                    self.formFile, package=self.project.getProjectPath())
-                objects = dlg.findChildren(QWidget) + dlg.findChildren(QAction)
-                
-                signatureList = self.__signatures()
-                
-                self.slotsModel.clear()
-                self.slotsModel.setHorizontalHeaderLabels([""])
-                for obj in objects:
-                    name = obj.objectName()
-                    if not name or name.startswith("qt_"):
-                        # ignore un-named or internal objects
-                        continue
-                    
-                    metaObject = obj.metaObject()
-                    className = metaObject.className()
-                    itm = QStandardItem("{0} ({1})".format(name, className))
-                    self.slotsModel.appendRow(itm)
-                    for index in range(metaObject.methodCount()):
-                        metaMethod = metaObject.method(index)
-                        if metaMethod.methodType() == QMetaMethod.Signal:
-                            if qVersionTuple() >= (5, 0, 0):
-                                itm2 = QStandardItem("on_{0}_{1}".format(
-                                    name,
-                                    bytes(metaMethod.methodSignature())
-                                    .decode()
-                                ))
-                            else:
-                                itm2 = QStandardItem("on_{0}_{1}".format(
-                                    name, metaMethod.signature()
-                                ))
-                            itm.appendRow(itm2)
-                            if self.__module is not None:
-                                if qVersionTuple() >= (5, 0, 0):
-                                    method = "on_{0}_{1}".format(
-                                        name,
-                                        bytes(metaMethod.methodSignature())
-                                        .decode().split("(")[0])
-                                else:
-                                    method = "on_{0}_{1}".format(
-                                        name,
-                                        metaMethod.signature().split("(")[0])
-                                method2 = "{0}({1})".format(
-                                    method,
-                                    ", ".join([
-                                        self.__mapType(t)
-                                        for t in metaMethod.parameterTypes()
-                                    ])
-                                )
-                                
-                                if method2 in signatureList or \
-                                        method in signatureList:
-                                    itm2.setFlags(
-                                        Qt.ItemFlags(Qt.ItemIsEnabled))
-                                    itm2.setCheckState(Qt.Checked)
-                                    itm2.setForeground(QBrush(Qt.blue))
-                                    continue
-                            
-                            returnType = self.__mapType(
-                                metaMethod.typeName().encode())
-                            if returnType == 'void':
-                                returnType = ""
-                            parameterTypesList = [
-                                self.__mapType(t)
-                                for t in metaMethod.parameterTypes()]
-                            pyqtSignature = ", ".join(parameterTypesList)
-                            
-                            parameterNames = metaMethod.parameterNames()
-                            if parameterNames:
-                                for index in range(len(parameterNames)):
-                                    if not parameterNames[index]:
-                                        parameterNames[index] = \
-                                            QByteArray("p{0:d}".format(index)
-                                                       .encode("utf-8"))
-                            parameterNamesList = [bytes(n).decode()
-                                                  for n in parameterNames]
-                            methNamesSig = ", ".join(parameterNamesList)
-                            
-                            if methNamesSig:
-                                if qVersionTuple() >= (5, 0, 0):
-                                    pythonSignature = \
-                                        "on_{0}_{1}(self, {2})".format(
-                                            name,
-                                            bytes(metaMethod.methodSignature())
-                                            .decode().split("(")[0],
-                                            methNamesSig)
-                                else:
-                                    pythonSignature = \
-                                        "on_{0}_{1}(self, {2})".format(
-                                            name,
-                                            metaMethod.signature()
-                                            .split("(")[0],
-                                            methNamesSig)
-                            else:
-                                if qVersionTuple() >= (5, 0, 0):
-                                    pythonSignature = "on_{0}_{1}(self)"\
-                                        .format(
-                                            name,
-                                            bytes(metaMethod.methodSignature())
-                                            .decode().split("(")[0])
-                                else:
-                                    pythonSignature = "on_{0}_{1}(self)"\
-                                        .format(
-                                            name,
-                                            metaMethod.signature().split(
-                                                "(")[0])
-                            itm2.setData(pyqtSignature, pyqtSignatureRole)
-                            itm2.setData(pythonSignature, pythonSignatureRole)
-                            itm2.setData(returnType, returnTypeRole)
-                            itm2.setData(parameterTypesList,
-                                         parameterTypesListRole)
-                            itm2.setData(parameterNamesList,
-                                         parameterNamesListRole)
-                            
-                            itm2.setFlags(Qt.ItemFlags(
-                                Qt.ItemIsUserCheckable |
-                                Qt.ItemIsEnabled |
-                                Qt.ItemIsSelectable)
-                            )
-                            itm2.setCheckState(Qt.Unchecked)
-                
-                self.slotsView.sortByColumn(0, Qt.AscendingOrder)
-            except (AttributeError, ImportError,
-                    xml.etree.ElementTree.ParseError) as err:
-                E5MessageBox.critical(
-                    self,
-                    self.tr("uic error"),
-                    self.tr(
-                        """<p>There was an error loading the form <b>{0}</b>"""
-                        """.</p><p>{1}</p>""").format(self.formFile, str(err)))
         
     def __generateCode(self):
         """

eric ide

mercurial