#------------------------------------------------------------------------------
# Copyright (c) 2013, Nucleic Development Team.
#
# Distributed under the terms of the Modified BSD License.
#
# The full license is in the file LICENSE, distributed with this software.
#------------------------------------------------------------------------------
from atom.api import Str, Typed, ForwardTyped, set_default
from enaml.core.declarative import d_, observe
from .control import Control, ProxyControl
class ProxyWebView(ProxyControl):
""" The abstract definition of a proxy WebView object.
"""
#: A reference to the WebView declaration.
declaration = ForwardTyped(lambda: WebView)
def set_url(self, url):
raise NotImplementedError
def set_html(self, html):
raise NotImplementedError
[docs]
class WebView(Control):
""" A widget which displays a web page.
Unlike the simpler `Html` widget, this widget supports the features
of a full web browser.
"""
#: The URL to load in the web view. This can be a path to a remote
#: resource or a path to a file on the local filesystem. This value
#: is mutually exclusive of `html`.
url = d_(Str())
#: The html to load into the web view. This value is mutually
#: exclusive of `url`.
html = d_(Str())
#: The base url for loading content in statically supplied 'html'.
base_url = d_(Str())
#: A web view expands freely in height and width by default.
hug_width = set_default('ignore')
hug_height = set_default('ignore')
#: A reference to the ProxyWebView object.
proxy = Typed(ProxyWebView)
#--------------------------------------------------------------------------
# Observers
#--------------------------------------------------------------------------
@observe('url', 'html')
def _update_proxy(self, change):
""" An observer which sends state change to the proxy.
"""
# The superclass handler implementation is sufficient.
super(WebView, self)._update_proxy(change)