def load_image(url, refresh_cb=None): global _imageloader if _imageloader is None: _imageloader = WebKitImageLoader() img = _imageloader.get_no_download(url) if img is not None: return img if refresh_cb is not None: refresh_cb = better_ref(refresh_cb) def unhook(): _imageloader.on_load -= on_load _imageloader.on_error -= on_error def on_load(img, src): if src == url: unhook() refresh_cb.maybe_call() def on_error(src): if src == url: unhook() _imageloader.on_load += on_load _imageloader.on_error += on_error return _imageloader.get(url, check_cache=False)
def link(self, key, callback, callnow=True, obj=None, thread='gui'): """ Link a key's value to a simple callback, which is called with new values when the key changes. """ assert callnow is True or callnow is False try: links = self._links except AttributeError: links = self._setup_links() try: thread_links = links[thread] except KeyError: thread_links = links[thread] = defaultdict(list) if obj is None: obj = callback.im_self def on_weakref_dead(wref): live = [] for r in thread_links[key]: if getattr(r, 'object', None) is wref: r.destroy() else: live.append(r) thread_links[key][:] = live ref = better_ref(callback, cb=on_weakref_dead, obj=obj) thread_links[key].append(ref) if callnow: callback(self[key]) return Linked(self, thread, key, ref)
def link(self, key, callback, callnow = True, obj = None, thread = 'gui'): """ Link a key's value to a simple callback, which is called with new values when the key changes. """ assert callnow is True or callnow is False try: links = self._links except AttributeError: links = self._setup_links() try: thread_links = links[thread] except KeyError: thread_links = links[thread] = defaultdict(list) if obj is None: obj = callback.im_self def on_weakref_dead(wref): live = [] for r in thread_links[key]: if getattr(r, 'object', None) is wref: r.destroy() else: live.append(r) thread_links[key][:] = live ref = better_ref(callback, cb=on_weakref_dead, obj = obj) thread_links[key].append(ref) if callnow: callback(self[key]) return Linked(self, thread, key, ref)