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