Skip to content

Commit 5a17878

Browse files
authored
EventViewer: Prevent unsafe signals from being used
1 parent 998670d commit 5a17878

File tree

1 file changed

+23
-14
lines changed

1 file changed

+23
-14
lines changed

plugindevtools/PluginDevTools/PluginDevToolsDocker.py

Lines changed: 23 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1959,8 +1959,15 @@ def addSignalItem(self, obj, meta, i, inheritsFrom, prepend=''):
19591959

19601960
methName = str(meth.name(), 'utf-8')
19611961

1962+
isSafe = True
1963+
1964+
for i in range(0,meth.parameterCount()):
1965+
print ( ptypes[i], b'Ko' in ptypes[i], b'*' in ptypes[i] )
1966+
if b'Ko' in ptypes[i] and b'*' in ptypes[i]:
1967+
isSafe = False
1968+
19621969

1963-
methDoc = methName + "(" + str(b','.join( [ ptypes[i]+b" "+pnames[i] for i in range(0,meth.parameterCount()) ] ), 'utf-8') + ")"
1970+
methDoc = ('' if isSafe else '[UNSAFE]') + methName + "(" + str(b','.join( [ ptypes[i]+b" "+pnames[i] for i in range(0,meth.parameterCount()) ] ), 'utf-8') + ")"
19641971

19651972
methType = self.caller.METHOD_ACCESS[int(meth.access())] + " " + self.caller.METHOD_TYPES[int(meth.methodType())]
19661973

@@ -1981,6 +1988,7 @@ def addSignalItem(self, obj, meta, i, inheritsFrom, prepend=''):
19811988
'doc': methDoc,
19821989
'active':1,
19831990
'used':False,
1991+
'safe':isSafe,
19841992
'code':'',
19851993
'item':[
19861994
QStandardItem( Krita.instance().icon('visible'), '' ),
@@ -2031,18 +2039,19 @@ def start(self):
20312039

20322040

20332041
for methName in self.signalsDict['current']:
2034-
#print ("MM", methName)
2035-
#self.signalsDict['current'][methName]['obj'].pyqtConfigure(**{ methName: self.signalsDict['current'][methName]['method']})
2036-
#QObject.connect(self.signalsDict['current'][methName]['obj'],QtCore.SIGNAL(self.signalsDict['current'][methName]['doc']),self.signalsDict['current'][methName]['method'])
2037-
2038-
#look into this way
2039-
#>>>>getattr(self.signalsDict['current'][methName]['obj'],methName)[**self.signalsDict['current'][methName]['params']].connect(self.signalsDict['current'][methName]['method'])
2040-
2041-
meth = getattr(self.signalsDict['current'][methName]['obj'],methName)
2042-
if isinstance(meth,type(pyqtBoundSignal())) or isinstance(meth,type(pyqtSignal())):
2043-
meth.connect(self.signalsDict['current'][methName]['method'])
2044-
else:
2045-
self.signalsDict['current'][methName]['item'][0].setData(QBrush(Qt.darkRed), Qt.BackgroundRole)
2042+
if self.signalsDict['current'][methName]['safe']:
2043+
print ("MM", methName, self.signalsDict['current'][methName] )
2044+
#self.signalsDict['current'][methName]['obj'].pyqtConfigure(**{ methName: self.signalsDict['current'][methName]['method']})
2045+
#QObject.connect(self.signalsDict['current'][methName]['obj'],QtCore.SIGNAL(self.signalsDict['current'][methName]['doc']),self.signalsDict['current'][methName]['method'])
2046+
2047+
#look into this way
2048+
#>>>>getattr(self.signalsDict['current'][methName]['obj'],methName)[**self.signalsDict['current'][methName]['params']].connect(self.signalsDict['current'][methName]['method'])
2049+
2050+
meth = getattr(self.signalsDict['current'][methName]['obj'],methName)
2051+
if isinstance(meth,type(pyqtBoundSignal())) or isinstance(meth,type(pyqtSignal())):
2052+
meth.connect(self.signalsDict['current'][methName]['method'])
2053+
else:
2054+
self.signalsDict['current'][methName]['item'][0].setData(QBrush(Qt.darkRed), Qt.BackgroundRole)
20462055

20472056

20482057
if self.centralWidget.eventFilterTypeCmb.currentIndex() == 0:
@@ -2062,7 +2071,7 @@ def stop(self):
20622071

20632072

20642073
for methName in self.signalsDict['current']:
2065-
if not sip.isdeleted(self.signalsDict['current'][methName]['obj']):
2074+
if self.signalsDict['current'][methName]['safe'] and not sip.isdeleted(self.signalsDict['current'][methName]['obj']):
20662075
meth = getattr(self.signalsDict['current'][methName]['obj'],methName)
20672076
if isinstance(meth,type(pyqtBoundSignal())) or isinstance(meth,type(pyqtSignal())):
20682077
meth.disconnect(self.signalsDict['current'][methName]['method'])

0 commit comments

Comments
 (0)