python-efl/examples/elementary/test_image_async.py

79 lines
2.2 KiB
Python

#!/usr/bin/env python
# encoding: utf-8
import os
from efl import elementary as elm
from efl.elementary import StandardWindow, Box, Image, Check, Button
from efl.evas import EXPAND_BOTH, FILL_BOTH, EXPAND_HORIZ, FILL_HORIZ
script_path = os.path.dirname(os.path.abspath(__file__))
img_path = os.path.join(script_path, "images")
img_file = os.path.join(img_path, "insanely_huge_test_image.jpg")
def create_image(win):
box = win.data["box"]
async = win.data["async_chk"].state
preload_disabled = win.data["preload_chk"].state
if "image" in win.data:
print("Deleting old image")
win.data["image"].delete()
print("Creating image, async: %s, preload_disabled: %s" % (
async, preload_disabled))
im = Image(win, async_open=async, preload_disabled=preload_disabled,
size_hint_weight=EXPAND_BOTH, size_hint_align=FILL_BOTH)
box.pack_start(im)
win.data["image"] = im
im.callback_load_open_add(lambda i: print("load,open"))
im.callback_load_ready_add(lambda i: print("load,ready"))
im.callback_load_error_add(lambda i: print("load,error"))
im.callback_load_cancel_add(lambda i: print("load,cancel"))
im.show()
im.file = img_file
def test_image_async(obj, it=None):
win = StandardWindow("image-async", "Image Async Test",
autodel=True, size=(320, 480))
box = Box(win, size_hint_weight=EXPAND_BOTH, size_hint_align=FILL_BOTH)
win.resize_object_add(box)
box.show()
win.data["box"] = box
hbox = Box(box, horizontal=True,
size_hint_weight=EXPAND_HORIZ, size_hint_align=FILL_HORIZ)
box.pack_end(hbox)
hbox.show()
ck = Check(hbox, text="Async file open")
hbox.pack_end(ck)
ck.show()
win.data["async_chk"] = ck
ck = Check(hbox, text="Disable preload")
hbox.pack_end(ck)
ck.show()
win.data["preload_chk"] = ck
bt = Button(box, text="Image Reload")
bt.callback_clicked_add(lambda b: create_image(win))
box.pack_end(bt)
bt.show()
create_image(win)
win.show()
if __name__ == "__main__":
elm.policy_set(elm.ELM_POLICY_QUIT, elm.ELM_POLICY_QUIT_LAST_WINDOW_CLOSED)
test_image_async(None)
elm.run()