예제 #1
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()
예제 #2
0
파일: test_tag.py 프로젝트: sojeba008/wdom
 def get_elements(self):
     self.doc.body.style = 'margin: 0; padding: 0;'
     self.elm = Div()
     self.elm.style = '''
         background-color: blue;
         width: 100px;
         height: 100px;
         display: inline-block;
     '''
     self.elm.addEventListener('click', self.click)
     self.test_done = False
     return self.elm
예제 #3
0
파일: test_tag.py 프로젝트: sojeba008/wdom
class TestEvent(PyppeteerTestCase):
    def get_elements(self):
        self.doc.body.style = 'margin: 0; padding: 0;'
        self.elm = Div()
        self.elm.style = '''
            background-color: blue;
            width: 100px;
            height: 100px;
            display: inline-block;
        '''
        self.elm.addEventListener('click', self.click)
        self.test_done = False
        return self.elm

    def click(self, e):
        self.assertFalse(e.altKey)
        self.assertFalse(e.ctrlKey)
        self.assertFalse(e.metaKey)
        self.assertFalse(e.shiftKey)
        self.assertLessEqual(e.clientX, 100)
        self.assertLessEqual(e.clientY, 100)
        self.assertLessEqual(e.offsetX, 100)
        self.assertLessEqual(e.offsetY, 100)
        self.assertLessEqual(e.pageX, 100)
        self.assertLessEqual(e.pageY, 100)
        self.assertLessEqual(e.x, 100)
        self.assertLessEqual(e.y, 100)
        self.test_done = True

    @sync
    async def test_click(self):
        await self.element.click()
        await self.wait()
        self.assertIsTrue(self.test_done)

    @sync
    async def test_document_click(self):
        mock = MagicMock(_is_coroutine=False)
        self.doc.addEventListener('click', mock)
        await self.wait()
        await self.element.click()
        await self.wait()
        self.assertIsTrue(mock.called)

    @sync
    async def test_window_click(self):
        mock = MagicMock(_is_coroutine=False)
        self.doc.defaultView.addEventListener('click', mock)
        await self.wait()
        await self.element.click()
        await self.wait()
        self.assertIsTrue(mock.called)
예제 #4
0
def sample_page(**kwargs):
    doc = get_document()
    win = doc.defaultView
    app = Div()
    inp = Input(id='input', parent=app)
    win1 = H1(id='win1', parent=app)
    doc1 = H1(id='doc1', parent=app)
    input_view = H1(id='input_view', parent=app)

    def add_letter_doc(e):
        doc1.textContent = doc1.textContent + e.key

    def add_letter_win(e):
        win1.textContent = win1.textContent + e.key

    def input_handler(e):
        input_view.textContent = e.data

    doc.addEventListener('keypress', add_letter_doc)
    win.addEventListener('keypress', add_letter_win)
    inp.addEventListener('input', input_handler)
    return app
예제 #5
0
파일: new3.py 프로젝트: miyakogi/wdom
    is_ = 'my-button'  # set name at is_

class DefaultButton(MyButton):
    class_ = 'btn-default'
    is_ = 'default-button'

if __name__ == '__main__':
    document = get_document()
    # Register MyElement
    document.defaultView.customElements.define('my-button', MyButton, {'extends': 'button'})
    document.defaultView.customElements.define('default-button', DefaultButton, {'extends': 'button'})

    # Load css and js file for bootstrap
    document.add_cssfile('https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css')
    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')

    div = Div(parent=document.body)
    div.innerHTML = '''
        <button is="my-button">MyButton</button>
        <button is="default-button">DefaultButton</button>
    '''.strip()
    print(isinstance(div.firstChild, MyButton))  # True
    print(isinstance(div.lastChild, DefaultButton))  # True

    start_server()
    try:
        asyncio.get_event_loop().run_forever()
    except KeyboardInterrupt:
        stop_server()
예제 #6
0
from wdom.tag import Button, Div

class MyButton(Button):
    # tag = 'button'  <- tag name is already defined in Button class
    class_ = 'btn'
    is_ = 'my-button'  # set name at is_

class DefaultButton(MyButton):
    class_ = 'btn-default'
    is_ = 'default-button'

if __name__ == '__main__':
    document = get_document()
    # Register MyElement
    document.defaultView.customElements.define('my-button', MyButton, {'extends': 'button'})
    document.defaultView.customElements.define('default-button', DefaultButton, {'extends': 'button'})

    # Load css and js file for bootstrap
    document.add_cssfile('https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css')
    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')

    div = Div(parent=document.body)
    div.innerHTML = '''
        <button is="my-button">MyButton</button>
        <button is="default-button">DefaultButton</button>
    '''.strip()
    print(isinstance(div.firstChild, MyButton))  # True
    print(isinstance(div.lastChild, DefaultButton))  # True
    start()
예제 #7
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()