From b054c3e48bb79ec7d80b5728e0551ed15f402b6d Mon Sep 17 00:00:00 2001 From: lovetox <philipp@hoerist.com> Date: Sun, 18 Apr 2021 20:54:35 +0200 Subject: [PATCH] Refactor Observable --- gajim/common/helpers.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/gajim/common/helpers.py b/gajim/common/helpers.py index 53c78a6a39..13ddcf3c94 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: -- GitLab