Esempio n. 1
0
 def start(self):
     """Start remote browser process."""
     self._prev_logging = options.config.logging
     options.config.logging = "warn"
     self.proc = ProcessController()
     self.browser = RemoteBrowserController()
     self.element = RemoteElementController()
     try:
         self.server = server.start_server(port=0)
     except OSError:
         self.wait(0.2)
         self.server = server.start_server(port=0)
     self.address = self.server.address
     self.url = "http://{0}:{1}/".format(self.address, self.port)
     self.browser.get(self.url)
     self.wait_until(lambda: server.is_connected())
Esempio n. 2
0
def main():
    # from tornado.ioloop import IOLoop
    # from tornado.platform.asyncio import AsyncIOMainLoop
    import asyncio
    from wdom.misc import install_asyncio
    install_asyncio()

    from wdom.server import start_server, get_app, stop_server
    # from wdom.server_aio import start_server, get_app, stop_server
    # from wdom.server_tornado import start_server, get_app, stop_server
    # from wdom.examples.markdown_simple import sample_page
    # from wdom.examples.rev_text import sample_page
    # from wdom.examples.data_binding import sample_page
    # from wdom.examples.todo import sample_page
    from wdom.examples.theming import sample_page
    # from wdom.themes import bootstrap3, mdl, skeleton, pure, semantic, kube, foundation, mui
    from wdom.themes import default
    page = sample_page(default)
    app = get_app(document=page)
    loop = asyncio.get_event_loop()
    server = start_server(app=app, loop=loop)

    try:
        loop.run_forever()
    except KeyboardInterrupt:
        stop_server(server)
        loop.close()
Esempio n. 3
0
 def start(self) -> None:
     """Start remote browser process."""
     self._prev_logging = options.config.logging
     options.config.logging = 'warn'
     self.proc = ProcessController()
     self.browser = RemoteBrowserController()
     self.element = RemoteElementController()
     try:
         self.server = server.start_server(port=0)
     except OSError:
         self.wait(0.2)
         self.server = server.start_server(port=0)
     self.address = server_config['address']
     self.url = 'http://{0}:{1}/'.format(self.address, self.port)
     self.browser.get(self.url)
     self.wait_until(lambda: server.is_connected())
Esempio n. 4
0
def main():
    AsyncIOMainLoop().install()

    doc = get_document()

    if not options.config.no_default_js:
        doc.add_jsfile(
            'https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js')
        doc.add_jsfile('static/bootstrap.min.js')
    if not options.config.no_default_css:
        doc.add_cssfile('static/bootstrap.min.css')

    _user_static_dirs = set()
    for js in options.config.js_files:
        _user_static_dirs.add(path.dirname(js))
        doc.add_jsfile(js)
    for css in options.config.css_files:
        _user_static_dirs.add(path.dirname(css))
        doc.add_cssfile(css)

    # choices arg is better, but detecting error is not easy in livemark.vim
    if options.config.highlight_theme in STYLE_MAP:
        pygments_style = HtmlFormatter(
            style=options.config.highlight_theme).get_style_defs()
    else:
        pygments_style = HtmlFormatter('default').get_style_defs()
    doc.head.appendChild(Style(pygments_style))

    script = Script(parent=doc.body)
    script.innerHTML = '''
        function moveToElement(id) {
            var elm = document.getElementById(id)
            if (elm) {
                var x = window.scrollX
                var rect = elm.getBoundingClientRect()
                window.scrollTo(x, rect.top + window.scrollY)
                console.log(elm.textContent)
            }
        }
    '''
    mount_point = Div(parent=doc.body, class_='container')
    mount_point.appendChild(H2('LiveMark is running...'))
    app = get_app(doc)
    app.add_static_path('static', static_dir)
    for _d in _user_static_dirs:
        app.add_static_path(_d, _d)
    web_server = start_server(app, port=options.config.browser_port)

    loop = asyncio.get_event_loop()
    vim_server = Server(port=options.config.vim_port, loop=loop, doc=doc,
                        mount_point=mount_point)
    browser = webbrowser.get(options.config.browser)
    browser.open('http://localhost:{}'.format(options.config.browser_port))
    try:
        vim_server.start()
        loop.run_forever()
    except KeyboardInterrupt:
        vim_server.stop()
        web_server.stop()
Esempio n. 5
0
 def setUp(self):
     self.doc = get_document()
     self.doc.body.appendChild(self.app())
     self.server = start_server(port=0)
     self.addr = server_config['address']
     self.port = server_config['port']
     self.url = 'http://{}:{}/'.format(self.addr, self.port)
     self.page = page
     sync(self.page.goto(self.url))
Esempio n. 6
0
    def start(self):
        """Start web server.

        Please call this method after prepraring document.
        """
        with self.assertLogs("wdom", "INFO"):
            self.server = server.start_server(port=0)
        self.port = self.server.port
        self.url = "http://localhost:{}".format(self.port)
        self.ws_url = "ws://localhost:{}".format(self.port)
        self._server_started = True
Esempio n. 7
0
 def setUp(self):
     from syncer import sync
     super().setUp()
     self.doc = get_document()
     self.root = self.get_elements()
     self.doc.body.prepend(self.root)
     self.server = server.start_server(port=0)
     self.address = server_config['address']
     self.port = server_config['port']
     self.url = 'http://{}:{}'.format(self.address, self.port)
     sync(self.page.goto(self.url))
     self.element = sync(self.get_element_handle(self.root))
Esempio n. 8
0
    def start(self) -> None:
        """Start web server.

        Please call this method after prepraring document.
        """
        time.sleep(0.1)
        with self.assertLogs(root_logger, 'INFO'):
            self.server = server.start_server(port=0)
        time.sleep(0.1)
        self.port = server_config['port']
        self.url = 'http://localhost:{}'.format(self.port)
        self.ws_url = 'ws://localhost:{}'.format(self.port)
        self._server_started = True
Esempio n. 9
0
def main():
    import asyncio
    from wdom.server import start_server, get_app, stop_server

    doc = sample_page()
    app = get_app(document=doc)
    loop = asyncio.get_event_loop()
    server = start_server(app=app, loop=loop)
    try:
        loop.run_forever()
    except KeyboardInterrupt:
        stop_server(server)
        loop.close()
Esempio n. 10
0
from wdom.server import get_app, start_server, stop_server
from wdom.document import get_document
from wdom.tag import Div, H1, Input


class MyElement(Div):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.h1 = H1(parent=self)
        self.h1.textContent = 'Hello, WDOM'
        self.input = Input(parent=self)
        self.input.addEventListener('input', self.update)

    def update(self, event):
        self.h1.textContent = event.target.value


if __name__ == '__main__':
    install_asyncio()  # only when using tornado

    document = get_document()
    document.body.appendChild(MyElement())

    app = get_app(document)
    loop = asyncio.get_event_loop()
    server = start_server(app, port=8888, loop=loop)
    try:
        loop.run_forever()
    except KeyboardInterrupt:
        stop_server(server)
Esempio n. 11
0
import asyncio
from wdom.server import start_server, stop_server
from wdom.document import get_document
from wdom.tag import Div, H1, Input

class MyElement(Div):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.h1 = H1()
        self.h1.textContent = 'Hello, WDOM'
        self.input = Input()
        self.input.addEventListener('input', self.update)
        self.appendChild(self.input)
        self.appendChild(self.h1)

    def update(self, event):
        self.h1.textContent = event.target.value

if __name__ == '__main__':
    document = get_document()
    document.body.appendChild(MyElement())
    server = start_server()
    try:
        asyncio.get_event_loop().run_forever()
    except KeyboardInterrupt:
        stop_server()
Esempio n. 12
0
def main():
    AsyncIOMainLoop().install()

    doc = get_document()

    if not options.config.no_default_js:
        doc.add_jsfile(
            'https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js'
        )
        doc.add_jsfile('static/bootstrap.min.js')
    if not options.config.no_default_css:
        doc.add_cssfile('static/bootstrap.min.css')

    _user_static_dirs = set()
    for js in options.config.js_files:
        _user_static_dirs.add(path.dirname(js))
        doc.add_jsfile(js)
    for css in options.config.css_files:
        _user_static_dirs.add(path.dirname(css))
        doc.add_cssfile(css)

    # choices arg is better, but detecting error is not easy in livemark.vim
    if options.config.highlight_theme in STYLE_MAP:
        pygments_style = HtmlFormatter(
            style=options.config.highlight_theme).get_style_defs()
    else:
        pygments_style = HtmlFormatter('default').get_style_defs()
    doc.head.appendChild(Style(pygments_style))

    script = Script(parent=doc.body)
    script.innerHTML = '''
        function moveToElement(id) {
            var elm = document.getElementById(id)
            if (elm) {
                var x = window.scrollX
                var rect = elm.getBoundingClientRect()
                window.scrollTo(x, rect.top + window.scrollY)
                console.log(elm.textContent)
            }
        }
    '''
    mount_point = Div(parent=doc.body, class_='container')
    mount_point.appendChild(H2('LiveMark is running...'))
    app = get_app(doc)
    app.add_static_path('static', static_dir)
    for _d in _user_static_dirs:
        app.add_static_path(_d, _d)
    web_server = start_server(app, port=options.config.browser_port)

    loop = asyncio.get_event_loop()
    vim_server = Server(port=options.config.vim_port,
                        loop=loop,
                        doc=doc,
                        mount_point=mount_point)
    browser = webbrowser.get(options.config.browser)
    browser.open('http://localhost:{}'.format(options.config.browser_port))
    try:
        vim_server.start()
        loop.run_forever()
    except KeyboardInterrupt:
        vim_server.stop()
        web_server.stop()
Esempio n. 13
0
import time
import subprocess
import asyncio
import tempfile

from selenium.webdriver.common.utils import free_port
from syncer import sync

from wdom.misc import install_asyncio
from wdom.document import get_document
from wdom import server
from wdom.testing import TestCase, HTTPTestCase

curdir = path.dirname(__file__)
root = path.dirname(path.dirname(curdir))
script = '''
import asyncio
import atexit
from wdom import document, server
doc = document.get_document()
with open(doc.tempdir + '/a.html', 'w') as f:
    f.write(doc.tempdir)
server.start_server()
atexit.register(server.stop_server)
try:
    asyncio.get_event_loop().run_forever()
except:
    server.stop_server()
'''

Esempio n. 14
0
        def start_server(port):
            import asyncio
            from wdom import server

            server.start_server(port=port)
            asyncio.get_event_loop().run_forever()
Esempio n. 15
0
class App(Div):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.text = H1(parent=self)
        self.text.textContent = 'Hello!'
        self.textbox = Input(parent=self)
        self.textbox.setAttribute('type', 'text')
        self.textbox.addEventListener('input', self.update)

    def update(self, event):
        self.text.textContent = self.textbox.getAttribute('value')


def sample_app(**kwargs):
    return App()


if __name__ == '__main__':
    import asyncio
    from wdom.document import get_document
    from wdom import server
    document = get_document()
    document.body.prepend(sample_app())
    server.start_server()
    try:
        asyncio.get_event_loop().run_forever()
    except KeyboardInterrupt:
        pass
    server.stop_server()
Esempio n. 16
0
import asyncio
from wdom.document import get_document
from wdom.server import start_server, stop_server
from wdom.tag import Button

if __name__ == '__main__':
    document = get_document()
    # Add <link>-tag sourcing bootstrap.min.css on <head>
    document.add_cssfile('https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css')
    # Add <script>-tag sourcing jquery and bootstrap.min.js to <body>
    document.add_jsfile('https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js')
    document.add_jsfile('https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js')

    # Add bootstrap button element
    document.body.appendChild(Button('click', class_='btn btn-primary'))

    start_server()
    try:
        asyncio.get_event_loop().run_forever()
    except KeyboardInterrupt:
        stop_server()
Esempio n. 17
0
        self.document.body.appendChild(self.ul)

    @on_event('*')
    @on_message('*')
    def every_frame(self, frame):
        li = Li()
        prefix = FRAME_PREFIX[frame.kind]
        text = frame_template.format(prefix=prefix,
                                     source=frame.source,
                                     name=frame.name)
        data = frame.data
        if data and not (len(data.keys()) == 1 and 'text' in data):
            text += data_template.format(data=pformat(data))

        li.innerHTML = text
        self.ul.appendChild(li)


if __name__ == '__main__':
    start_server()
    try:
        dom_agent = BrowserDOMAgent('dom')
        run_agents(dom_agent,
                   shell=True,
                   endpoint='redis://127.0.0.1:6379',
                   auth=ZENTROPI_REDIS_PASSWORD)
    except KeyboardInterrupt:
        stop_server()
    finally:
        stop_server()