# HG changeset patch # User Goffi # Date 1296774821 -3600 # Node ID c2537142409030be29f62e750929b1543cc84a6e # Parent 68cd30d982a5fdc9e3b584be88803b2b9c119e51 dbus bridge: fixed introspection for dynamically added methods and signals diff -r 68cd30d982a5 -r c25371424090 src/bridge/DBus.py --- a/src/bridge/DBus.py Thu Feb 03 18:06:25 2011 +0100 +++ b/src/bridge/DBus.py Fri Feb 04 00:13:41 2011 +0100 @@ -342,6 +342,9 @@ 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 @@ 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 -r 68cd30d982a5 -r c25371424090 src/bridge/bridge_constructor/dbus_core_template.py --- a/src/bridge/bridge_constructor/dbus_core_template.py Thu Feb 03 18:06:25 2011 +0100 +++ b/src/bridge/bridge_constructor/dbus_core_template.py Fri Feb 04 00:13:41 2011 +0100 @@ -94,6 +94,9 @@ 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 @@ 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):