From b200e5f8de193b9d4bd0213f2b17cceee8e44e15 Mon Sep 17 00:00:00 2001 From: Goffi Date: Fri, 4 Feb 2011 00:13:41 +0100 Subject: [PATCH] dbus bridge: fixed introspection for dynamically added methods and signals --- src/bridge/DBus.py | 6 ++++++ src/bridge/bridge_constructor/dbus_core_template.py | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/src/bridge/DBus.py b/src/bridge/DBus.py index d6d24c20..a670a35e 100755 --- a/src/bridge/DBus.py +++ b/src/bridge/DBus.py @@ -342,6 +342,9 @@ class DbusObject(dbus.service.Object): method = locals()[name] setattr(DbusObject, name, dbus.service.method( const_INT_PREFIX+int_suffix, in_signature=in_sign, out_signature=out_sign)(method)) + function = getattr(self, name) + func_table = self._dbus_class_table[self.__class__.__module__ + '.' + self.__class__.__name__][function._dbus_interface] + func_table[function.__name__] = function #Needed for introspection def addSignal(self, name, int_suffix, signature): """Dynamically add a signal to Dbus Bridge""" @@ -353,6 +356,9 @@ class DbusObject(dbus.service.Object): signal = locals()[name] setattr(DbusObject, name, dbus.service.signal( const_INT_PREFIX+int_suffix, signature=signature)(signal)) + function = getattr(self, name) + func_table = self._dbus_class_table[self.__class__.__module__ + '.' + self.__class__.__name__][function._dbus_interface] + func_table[function.__name__] = function #Needed for introspection class DBusBridge(Bridge): def __init__(self): diff --git a/src/bridge/bridge_constructor/dbus_core_template.py b/src/bridge/bridge_constructor/dbus_core_template.py index 1c02abb9..b2705359 100644 --- a/src/bridge/bridge_constructor/dbus_core_template.py +++ b/src/bridge/bridge_constructor/dbus_core_template.py @@ -94,6 +94,9 @@ class DbusObject(dbus.service.Object): method = locals()[name] setattr(DbusObject, name, dbus.service.method( const_INT_PREFIX+int_suffix, in_signature=in_sign, out_signature=out_sign)(method)) + function = getattr(self, name) + func_table = self._dbus_class_table[self.__class__.__module__ + '.' + self.__class__.__name__][function._dbus_interface] + func_table[function.__name__] = function #Needed for introspection def addSignal(self, name, int_suffix, signature): """Dynamically add a signal to Dbus Bridge""" @@ -105,6 +108,9 @@ class DbusObject(dbus.service.Object): signal = locals()[name] setattr(DbusObject, name, dbus.service.signal( const_INT_PREFIX+int_suffix, signature=signature)(signal)) + function = getattr(self, name) + func_table = self._dbus_class_table[self.__class__.__module__ + '.' + self.__class__.__name__][function._dbus_interface] + func_table[function.__name__] = function #Needed for introspection class DBusBridge(Bridge): def __init__(self):