From a2d3ca6565c3b2ef60a274313446616f91fa06bc Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Wed, 24 Sep 2014 06:25:08 +0200 Subject: [PATCH] Make it possible to update an object in the object registry. --- qutebrowser/utils/usertypes.py | 6 +----- qutebrowser/utils/utils.py | 18 +++++++++++++++--- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/qutebrowser/utils/usertypes.py b/qutebrowser/utils/usertypes.py index 51ee611d2..81af0a357 100644 --- a/qutebrowser/utils/usertypes.py +++ b/qutebrowser/utils/usertypes.py @@ -395,12 +395,8 @@ class ObjectRegistry(collections.UserDict): def __setitem__(self, name, obj): """Register an object in the object registry. - Prevents duplicated registrations and sets a slot to remove QObjects - when they are destroyed. + Sets a slot to remove QObjects when they are destroyed. """ - if name in self.data: - raise KeyError("Object '{}' is already registered ({})!".format( - name, repr(self.data[name]))) if isinstance(obj, QObject): obj.destroyed.connect(functools.partial(self.on_destroyed, name)) super().__setitem__(name, obj) diff --git a/qutebrowser/utils/utils.py b/qutebrowser/utils/utils.py index 912d8f952..4a6b4177e 100644 --- a/qutebrowser/utils/utils.py +++ b/qutebrowser/utils/utils.py @@ -585,6 +585,18 @@ def get_object(name): return QCoreApplication.instance().registry[name] -def register_object(name, obj): - """Helper function to register an object.""" - QCoreApplication.instance().registry[name] = obj +def register_object(name, obj, update=False): + """Helper function to register an object. + + Args: + name: The name the object will be registered as. + obj: The object to register. + update: If True, allows to update an already registered object. + """ + registry = QCoreApplication.instance().registry + if not update and name in registry: + raise KeyError("Object '{}' is already registered ({})!".format( + name, repr(registry[name]))) + registry[name] = obj + +