132 lines
3.6 KiB
Python
132 lines
3.6 KiB
Python
#!/usr/bin/env python
|
|
# encoding: utf-8
|
|
|
|
from efl import evas
|
|
from efl import ecore
|
|
from efl import elementary
|
|
from efl.elementary.window import Window
|
|
from efl.elementary.background import Background
|
|
from efl.elementary.box import Box
|
|
from efl.elementary.button import Button
|
|
from efl.elementary.entry import Entry
|
|
from efl.elementary.web import Web
|
|
|
|
|
|
def web_clicked(obj):
|
|
if not elementary.need_web():
|
|
print("EFL-webkit not available!")
|
|
return
|
|
|
|
win = Window("web", elementary.ELM_WIN_BASIC)
|
|
win.title_set("Web")
|
|
win.autodel_set(True)
|
|
if obj is None:
|
|
win.callback_delete_request_add(lambda o: elementary.exit())
|
|
|
|
bg = Background(win)
|
|
win.resize_object_add(bg)
|
|
bg.size_hint_weight_set(evas.EVAS_HINT_EXPAND, evas.EVAS_HINT_EXPAND)
|
|
bg.show()
|
|
|
|
vbx = Box(win)
|
|
win.resize_object_add(vbx)
|
|
vbx.size_hint_weight_set(evas.EVAS_HINT_EXPAND, evas.EVAS_HINT_EXPAND)
|
|
vbx.show()
|
|
|
|
web = Web(win)
|
|
web.uri_set("http://enlightenment.org/")
|
|
web.size_hint_weight_set(evas.EVAS_HINT_EXPAND, evas.EVAS_HINT_EXPAND)
|
|
web.size_hint_align_set(evas.EVAS_HINT_FILL, evas.EVAS_HINT_FILL)
|
|
web.size_hint_min_set(100, 100)
|
|
vbx.pack_end(web)
|
|
web.show()
|
|
|
|
# Debug:
|
|
def dbg(*args):
|
|
print(("DEBUG: %s" % args[-1], " ".join(repr(x) for x in args[1:-1])))
|
|
web.callback_link_hover_in_add(dbg, "link in")
|
|
web.callback_link_hover_out_add(dbg, "link out")
|
|
|
|
web.callback_uri_changed_add(dbg, "uri")
|
|
web.callback_title_changed_add(dbg, "title")
|
|
web.callback_load_finished_add(dbg, "load finished")
|
|
web.callback_load_finished_add(dbg, "load error")
|
|
web.callback_load_progress_add(dbg, "load progress")
|
|
web.callback_load_provisional_add(dbg, "load provisional")
|
|
web.callback_load_started_add(dbg, "load started")
|
|
|
|
# JS debug to console:
|
|
def console_msg(obj, msg, line, src):
|
|
print(("CONSOLE: %s:%d %r" % (src, line, msg)))
|
|
web.console_message_hook_set(console_msg)
|
|
|
|
# navigation bar:
|
|
hbx = Box(win)
|
|
hbx.horizontal_set(True)
|
|
hbx.size_hint_weight_set(evas.EVAS_HINT_EXPAND, 0.0)
|
|
hbx.size_hint_align_set(evas.EVAS_HINT_FILL, 0.0)
|
|
vbx.pack_start(hbx)
|
|
hbx.show()
|
|
|
|
bt = Button(win)
|
|
bt.text_set("Back")
|
|
bt.callback_clicked_add(lambda x: web.back())
|
|
hbx.pack_end(bt)
|
|
bt.show()
|
|
|
|
bt = Button(win)
|
|
bt.text_set("Forward")
|
|
bt.callback_clicked_add(lambda x: web.forward())
|
|
hbx.pack_end(bt)
|
|
bt.show()
|
|
|
|
bt = Button(win)
|
|
bt.text_set("Reload")
|
|
bt.callback_clicked_add(lambda x: web.reload())
|
|
hbx.pack_end(bt)
|
|
bt.show()
|
|
|
|
bt = Button(win)
|
|
bt.text_set("Stop")
|
|
bt.callback_clicked_add(lambda x: web.stop())
|
|
hbx.pack_end(bt)
|
|
bt.show()
|
|
|
|
en = Entry(win)
|
|
en.scrollable_set(True)
|
|
en.editable_set(True)
|
|
en.single_line_set(True)
|
|
en.size_hint_weight_set(evas.EVAS_HINT_EXPAND, 0.0)
|
|
en.size_hint_align_set(evas.EVAS_HINT_FILL, evas.EVAS_HINT_FILL)
|
|
hbx.pack_end(en)
|
|
en.show()
|
|
|
|
# Sync navigation entry and current URI
|
|
def do_change_uri(en):
|
|
web.uri = en.entry
|
|
|
|
def did_change_uri(web, uri, en):
|
|
en.entry = uri
|
|
|
|
en.callback_activated_add(do_change_uri)
|
|
web.callback_uri_changed_add(did_change_uri, en)
|
|
|
|
# Sync title
|
|
def did_change_title(web, title, win):
|
|
win.title_set("Web - %s" % title)
|
|
web.callback_title_changed_add(did_change_title, win)
|
|
|
|
win.resize(800, 600)
|
|
win.show()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
elementary.init()
|
|
elementary.policy_set(elementary.ELM_POLICY_QUIT,
|
|
elementary.ELM_POLICY_QUIT_LAST_WINDOW_CLOSED)
|
|
|
|
web_clicked(None)
|
|
|
|
elementary.run()
|
|
elementary.shutdown()
|