Infrastructure for loading viewer js

This commit is contained in:
Kovid Goyal 2018-08-28 13:19:46 +05:30
parent 7b75c67e15
commit 6e14daac89
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
4 changed files with 26 additions and 11 deletions

View File

@ -283,11 +283,12 @@ class RapydScript(Command): # {{{
help='Only compile the specified module')
def run(self, opts):
from calibre.utils.rapydscript import compile_srv, compile_editor
from calibre.utils.rapydscript import compile_srv, compile_editor, compile_viewer
if opts.only_module:
locals()['compile_' + opts.only_module]()
else:
compile_editor()
compile_viewer()
compile_srv()
# }}}

View File

@ -6,7 +6,7 @@ from __future__ import absolute_import, division, print_function, unicode_litera
import os
from PyQt5.Qt import QApplication, QBuffer, QByteArray, QSize
from PyQt5.Qt import QApplication, QBuffer, QByteArray, QSize, QUrl
from PyQt5.QtWebEngineCore import QWebEngineUrlSchemeHandler
from PyQt5.QtWebEngineWidgets import (
QWebEnginePage, QWebEngineProfile, QWebEngineScript
@ -107,15 +107,10 @@ def create_profile():
ua = 'calibre-viewer ' + __version__
ans.setHttpUserAgent(ua)
if is_running_from_develop:
from calibre.utils.rapydscript import compile_editor
compile_editor()
js = P('editor.js', data=True, allow_user_override=False)
cparser = P('csscolorparser.js', data=True, allow_user_override=False)
insert_scripts(ans,
create_script('csscolorparser.js', cparser),
create_script('editor.js', js),
)
from calibre.utils.rapydscript import compile_viewer
compile_viewer()
js = P('viewer.js', data=True, allow_user_override=False)
insert_scripts(ans, create_script('viewer.js', js))
url_handler = UrlSchemeHandler(ans)
ans.installUrlSchemeHandler(QByteArray(FAKE_PROTOCOL.encode('ascii')), url_handler)
s = ans.settings()
@ -177,6 +172,7 @@ class WebView(RestartingWebEngineView):
self._page = WebPage(self)
self.setPage(self._page)
self.setAcceptDrops(False)
self.clear()
def render_process_died(self):
if self.dead_renderer_error_shown:
@ -191,3 +187,6 @@ class WebView(RestartingWebEngineView):
def refresh(self):
self.pageAction(QWebEnginePage.Reload).trigger()
def clear(self):
self.setHtml('<p>&nbsp;', QUrl('{}://{}/'.format(FAKE_PROTOCOL, FAKE_HOST)))

View File

@ -221,6 +221,16 @@ def compile_editor():
atomic_write(base, 'editor.js', js)
def compile_viewer():
base = base_dir()
rapydscript_dir = os.path.join(base, 'src', 'pyj')
fname = os.path.join(rapydscript_dir, 'viewer-main.pyj')
with lopen(fname, 'rb') as f:
js = compile_fast(f.read(), fname, js_version=6).replace('__SPECIAL_TITLE__', special_title, 1)
base = os.path.join(base, 'resources')
atomic_write(base, 'viewer.js', js)
def compile_srv():
base = base_dir()
iconf = os.path.join(base, 'imgsrc', 'srv', 'generate.py')

5
src/pyj/viewer-main.pyj Normal file
View File

@ -0,0 +1,5 @@
# vim:fileencoding=utf-8
# License: GPL v3 Copyright: 2018, Kovid Goyal <kovid at kovidgoyal.net>
from __python__ import bound_methods, hash_literals
print('11111111111111', document.location.href)