Esempio n. 1
0
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)
Esempio n. 2
0
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)
Esempio n. 3
0
    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)
Esempio n. 4
0
    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)