Skip to content

Commit 490bfa4

Browse files
authored
Inspector: Added non-sig/slot methods, table wildcard search and minor fixes
1 parent f1f5f97 commit 490bfa4

File tree

1 file changed

+40
-3
lines changed

1 file changed

+40
-3
lines changed

plugindevtools/PluginDevTools/PluginDevToolsDocker.py

Lines changed: 40 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1007,6 +1007,8 @@ def finishedSampling(self):
10071007
self.caller.centralWidget.tabWidget.setCurrentIndex(1)
10081008

10091009
def findAncestor(self, ancestor, obj):
1010+
if not hasattr(obj, 'parent'): return False
1011+
10101012
parent = obj.parent()
10111013
while True:
10121014
if not parent:
@@ -1110,6 +1112,7 @@ def __init__(self, caller):
11101112
self.tableModel = QStandardItemModel()
11111113
self.proxyTableModel = QSortFilterProxyModel()
11121114
self.proxyTableModel.setFilterCaseSensitivity( Qt.CaseInsensitive )
1115+
self.proxyTableModel.setFilterKeyColumn(-1)
11131116
self.tableModel.setHorizontalHeaderLabels(['Name', "Type", 'Value'])
11141117

11151118
self.proxyTableModel.setSourceModel(self.tableModel)
@@ -1323,7 +1326,7 @@ def getCode(self):
13231326
# break
13241327
#"""
13251328
elif statusbar:
1326-
codeBase = "from krita import *\n\nqsbar = Krita.instance().activeWindow().qwindow().statusBar()\n"
1329+
codeBase = "from krita import *\n\nqsbar = Krita.instance().activeWindow().qwindow().statusBar()\n#warning: statusbar is often empty when no document is open\n"
13271330
onWidget = "qsbar"
13281331
path.pop()
13291332

@@ -1404,7 +1407,7 @@ def searchTreeFilter(self, text):
14041407

14051408

14061409
def searchTableFilter(self, text):
1407-
self.proxyTableModel.setFilterFixedString(text)
1410+
self.proxyTableModel.setFilterWildcard(text)
14081411

14091412
def selectItemByRef(self, obj):
14101413
pass
@@ -1485,6 +1488,15 @@ def loadItemInfo(self, obj):
14851488

14861489
inheritsFrom = []
14871490

1491+
otherMethods = {}
1492+
1493+
for k in dir(obj):
1494+
if not k.startswith('__'):
1495+
objAttr = getattr(obj,k)
1496+
1497+
if hasattr(objAttr,'__name__'):
1498+
otherMethods[objAttr.__name__] = True
1499+
14881500

14891501
while True:
14901502
for i in range(meta.propertyOffset(), meta.propertyCount(), 1 ):
@@ -1515,6 +1527,9 @@ def loadItemInfo(self, obj):
15151527
ptypes = meth.parameterTypes()
15161528
className = None
15171529

1530+
if meth.name() in otherMethods:
1531+
del otherMethods[k]
1532+
15181533
methName = str(meth.name(), 'utf-8') + "(" + str(b','.join( [ ptypes[i]+b" "+pnames[i] for i in range(0,meth.parameterCount()) ] ), 'utf-8') + ")"
15191534
if methName not in metaDict['methods']:
15201535
methType = self.METHOD_ACCESS[int(meth.access())] + " " + self.METHOD_TYPES[int(meth.methodType())]
@@ -1562,7 +1577,7 @@ def loadItemInfo(self, obj):
15621577

15631578

15641579
parentItem.appendRow([
1565-
self.subheaderItem("Methods"),
1580+
self.subheaderItem("Slots and Signals"),
15661581
self.subheaderItem(""),
15671582
self.subheaderItem("")
15681583
])
@@ -1577,6 +1592,28 @@ def loadItemInfo(self, obj):
15771592

15781593
parentItem.appendRow(item)
15791594

1595+
parentItem.appendRow([
1596+
self.subheaderItem("Methods"),
1597+
self.subheaderItem(""),
1598+
self.subheaderItem("")
1599+
])
1600+
1601+
for k in sorted(otherMethods.keys()):
1602+
if not k.startswith('__'):
1603+
objDoc = getattr(obj,k).__doc__
1604+
if '(self' in objDoc:
1605+
objSig = objDoc.split(' -> ')
1606+
1607+
item = [
1608+
QStandardItem( objSig[0].replace('(self, ','(').replace('(self)','()') ),
1609+
QStandardItem( 'Method' ),
1610+
QStandardItem( objSig[1] if len(objSig) > 1 else 'void' ),
1611+
]
1612+
1613+
item[0].setData(meth, 101)
1614+
1615+
parentItem.appendRow(item)
1616+
15801617
def subheaderItem(self, text):
15811618
objectHeader = QStandardItem(text)
15821619
font = objectHeader.font()

0 commit comments

Comments
 (0)