diff --git a/gajim/common/helpers.py b/gajim/common/helpers.py index 53c78a6a39134a3372af9ee4fc85bbfd807dc9f6..13ddcf3c9404b9e67a6470779ea721d9492ea723 100644 --- a/gajim/common/helpers.py +++ b/gajim/common/helpers.py @@ -1182,7 +1182,7 @@ def __init__(self, log_=None): def disconnect_signals(self): self._callbacks = defaultdict(lambda: defaultdict(list)) - def disconnect(self, object_): + def disconnect_all_from_obj(self, object_): for signal_name, qualifiers in self._callbacks.items(): for qualifier, handlers in qualifiers.items(): for handler in list(handlers): @@ -1190,7 +1190,10 @@ def disconnect(self, object_): if func is None or func.__self__ is object_: self._callbacks[signal_name][qualifier].remove(handler) - def connect(self, signal_name, func, qualifiers=None): + def disconnect(self, *args): + self.disconnect_all_from_obj(*args) + + def connect_signal(self, signal_name, func, qualifiers=None): if not inspect.ismethod(func): raise ValueError('Only bound methods allowed') @@ -1198,9 +1201,12 @@ def connect(self, signal_name, func, qualifiers=None): self._callbacks[signal_name][qualifiers].append(weak_func) + def connect(self, *args, **kwargs): + self.connect_signal(*args, **kwargs) + def multi_connect(self, signal_dict): for signal_name, func in signal_dict.items(): - self.connect(signal_name, func) + self.connect_signal(signal_name, func) def notify(self, signal_name, *args, qualifiers=None, **kwargs): if self._log is not None: