Modified the Python debuggers to better cope with later PyQt4 versions. 5_1_x

Sun, 27 Nov 2011 19:30:27 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sun, 27 Nov 2011 19:30:27 +0100
branch
5_1_x
changeset 1472
cbaa32917694
parent 1460
8796ba2ba2ec
child 1473
c3bdd5ebafbc

Modified the Python debuggers to better cope with later PyQt4 versions.
(transplanted from 65af67c5b5c39df42f0dc6b91b9304e4f13731c3)

DebugClients/Python/DebugClientBase.py file | annotate | diff | comparison | revisions
DebugClients/Python3/DebugClientBase.py file | annotate | diff | comparison | revisions
--- a/DebugClients/Python/DebugClientBase.py	Sun Nov 20 14:46:50 2011 +0100
+++ b/DebugClients/Python/DebugClientBase.py	Sun Nov 27 19:30:27 2011 +0100
@@ -1380,21 +1380,37 @@
                 else:
                     vlist = []
             else:
-                # format the dictionary found
-                if dictkeys is None:
-                    dictkeys = dict.keys()
+                qtVariable = False
+                if len(udict) > 0:
+                    if access:
+                        exec 'qvar = udict%s' % access
+                    # this has to be in line with VariablesViewer.indicators
+                    elif rvar and rvar[0][-2:] in ["[]", "()", "{}"]:
+                        exec 'qvar = udict["%s"][%s]' % (rvar[0][:-2], rvar[1])
+                    else:
+                        qvar = udict[var[-1]]
+                    qvtype = ("%s" % type(qvar))[1:-1].split()[1][1:-1]
+                    if qvtype.startswith("PyQt4"):
+                        qtVariable = True
+                
+                if qtVariable:
+                    vlist = self.__formatQt4Variable(qvar, qvtype)
                 else:
-                    # treatment for sequences and dictionaries
-                    if access:
-                        exec "dict = dict%s" % access
-                    else:
-                        dict = dict[dictkeys[0]]
-                    if isDict:
+                    # format the dictionary found
+                    if dictkeys is None:
                         dictkeys = dict.keys()
                     else:
-                        dictkeys = range(len(dict))
-                vlist = self.__formatVariablesList(dictkeys, dict, scope, filter, 
-                                                 formatSequences)
+                        # treatment for sequences and dictionaries
+                        if access:
+                            exec "dict = dict%s" % access
+                        else:
+                            dict = dict[dictkeys[0]]
+                        if isDict:
+                            dictkeys = dict.keys()
+                        else:
+                            dictkeys = range(len(dict))
+                    vlist = self.__formatVariablesList(dictkeys, dict, scope, filter, 
+                                                     formatSequences)
             varlist.extend(vlist)
         
             if obj is not None and not formatSequences:
@@ -1590,7 +1606,11 @@
                         if valtype == "classobj":
                             if ConfigVarTypeStrings.index('instance') in filter:
                                 continue
-                        elif ConfigVarTypeStrings.index('other') in filter:
+                        elif valtype == "sip.methoddescriptor":
+                            if ConfigVarTypeStrings.index('instance method') in filter:
+                                continue
+                        elif not valtype.startswith("PySide") and \
+                             ConfigVarTypeStrings.index('other') in filter:
                             continue
                     
                 try:
--- a/DebugClients/Python3/DebugClientBase.py	Sun Nov 20 14:46:50 2011 +0100
+++ b/DebugClients/Python3/DebugClientBase.py	Sun Nov 27 19:30:27 2011 +0100
@@ -1397,23 +1397,42 @@
                 else:
                     vlist = []
             else:
-                # format the dictionary found
-                if dictkeys is None:
-                    dictkeys = dict.keys()
-                else:
-                    # treatment for sequences and dictionaries
+                qtVariable = False
+                if len(udict) > 0:
                     if access:
-                        loc = {"dict" : dict}
-                        exec("dict = dict{0!s}".format(access), globals(), loc)
-                        dict = loc["dict"]
+                        loc = {"udict" : udict}
+                        exec('qvar = udict{0!s}'.format(access), globals(), loc)
+                        qvar = loc["qvar"]
+                    # this has to be in line with VariablesViewer.indicators
+                    elif rvar and rvar[0][-2:] in ["[]", "()", "{}"]:
+                        loc = {"udict" : udict}
+                        exec('qvar = udict["{0!s}"][{1!s}]'.format(rvar[0][:-2], rvar[1]), 
+                             globals(), loc)
+                        qvar = loc["qvar"]
                     else:
-                        dict = dict[dictkeys[0]]
-                    if isDict:
+                        qvar = udict[var[-1]]
+                    qvtype = str(type(qvar))[1:-1].split()[1][1:-1]
+                    if qvtype.startswith("PyQt4"):
+                        qtVariable = True
+                
+                if qtVariable:
+                    vlist = self.__formatQt4Variable(qvar, qvtype)
+                else:
+                    # format the dictionary found
+                    if dictkeys is None:
                         dictkeys = dict.keys()
                     else:
-                        dictkeys = range(len(dict))
-                vlist = self.__formatVariablesList(dictkeys, dict, scope, filter, 
-                                                   formatSequences)
+                        # treatment for sequences and dictionaries
+                        if access:
+                            exec "dict = dict%s" % access
+                        else:
+                            dict = dict[dictkeys[0]]
+                        if isDict:
+                            dictkeys = dict.keys()
+                        else:
+                            dictkeys = range(len(dict))
+                    vlist = self.__formatVariablesList(dictkeys, dict, scope, filter, 
+                                                     formatSequences)
             varlist.extend(vlist)
         
             if obj is not None and not formatSequences:
@@ -1614,7 +1633,11 @@
                         if valtype == "classobj":
                             if ConfigVarTypeStrings.index('instance') in filter:
                                 continue
-                        elif ConfigVarTypeStrings.index('other') in filter:
+                        elif valtype == "sip.methoddescriptor":
+                            if ConfigVarTypeStrings.index('instance method') in filter:
+                                continue
+                        elif not valtype.startswith("PySide") and \
+                             ConfigVarTypeStrings.index('other') in filter:
                             continue
                 
                 try:

eric ide

mercurial