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') help='Only compile the specified module')
def run(self, opts): 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: if opts.only_module:
locals()['compile_' + opts.only_module]() locals()['compile_' + opts.only_module]()
else: else:
compile_editor() compile_editor()
compile_viewer()
compile_srv() compile_srv()
# }}} # }}}

View File

@ -6,7 +6,7 @@ from __future__ import absolute_import, division, print_function, unicode_litera
import os 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.QtWebEngineCore import QWebEngineUrlSchemeHandler
from PyQt5.QtWebEngineWidgets import ( from PyQt5.QtWebEngineWidgets import (
QWebEnginePage, QWebEngineProfile, QWebEngineScript QWebEnginePage, QWebEngineProfile, QWebEngineScript
@ -107,15 +107,10 @@ def create_profile():
ua = 'calibre-viewer ' + __version__ ua = 'calibre-viewer ' + __version__
ans.setHttpUserAgent(ua) ans.setHttpUserAgent(ua)
if is_running_from_develop: if is_running_from_develop:
from calibre.utils.rapydscript import compile_editor from calibre.utils.rapydscript import compile_viewer
compile_editor() compile_viewer()
js = P('editor.js', data=True, allow_user_override=False) js = P('viewer.js', data=True, allow_user_override=False)
cparser = P('csscolorparser.js', data=True, allow_user_override=False) insert_scripts(ans, create_script('viewer.js', js))
insert_scripts(ans,
create_script('csscolorparser.js', cparser),
create_script('editor.js', js),
)
url_handler = UrlSchemeHandler(ans) url_handler = UrlSchemeHandler(ans)
ans.installUrlSchemeHandler(QByteArray(FAKE_PROTOCOL.encode('ascii')), url_handler) ans.installUrlSchemeHandler(QByteArray(FAKE_PROTOCOL.encode('ascii')), url_handler)
s = ans.settings() s = ans.settings()
@ -177,6 +172,7 @@ class WebView(RestartingWebEngineView):
self._page = WebPage(self) self._page = WebPage(self)
self.setPage(self._page) self.setPage(self._page)
self.setAcceptDrops(False) self.setAcceptDrops(False)
self.clear()
def render_process_died(self): def render_process_died(self):
if self.dead_renderer_error_shown: if self.dead_renderer_error_shown:
@ -191,3 +187,6 @@ class WebView(RestartingWebEngineView):
def refresh(self): def refresh(self):
self.pageAction(QWebEnginePage.Reload).trigger() 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) 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(): def compile_srv():
base = base_dir() base = base_dir()
iconf = os.path.join(base, 'imgsrc', 'srv', 'generate.py') 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)