def __notify_observer__(self, observer, method, *args, **kwargs): """This makes a call either through the gtk.idle list or a direct method call depending whether the caller's thread is different from the observer's thread""" assert self.__observer_threads.has_key(observer) if _threading.currentThread() == self.__observer_threads[observer]: # standard call return Model.__notify_observer__(self, observer, method, *args, **kwargs) # multi-threading call gobject.idle_add(self.__idle_callback, observer, method, args, kwargs) return