From 6e14daac89a28a25f9c84e7eea8423599dfd044e Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Tue, 28 Aug 2018 13:19:46 +0530 Subject: [PATCH] Infrastructure for loading viewer js --- setup/resources.py | 3 ++- src/calibre/gui2/viewer2/web_view.py | 19 +++++++++---------- src/calibre/utils/rapydscript.py | 10 ++++++++++ src/pyj/viewer-main.pyj | 5 +++++ 4 files changed, 26 insertions(+), 11 deletions(-) create mode 100644 src/pyj/viewer-main.pyj diff --git a/setup/resources.py b/setup/resources.py index 0a492e3117..c0bf9b718f 100644 --- a/setup/resources.py +++ b/setup/resources.py @@ -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() # }}} diff --git a/src/calibre/gui2/viewer2/web_view.py b/src/calibre/gui2/viewer2/web_view.py index 9d6fbe6e86..7c0129da95 100644 --- a/src/calibre/gui2/viewer2/web_view.py +++ b/src/calibre/gui2/viewer2/web_view.py @@ -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('

 ', QUrl('{}://{}/'.format(FAKE_PROTOCOL, FAKE_HOST))) diff --git a/src/calibre/utils/rapydscript.py b/src/calibre/utils/rapydscript.py index f3c6ca0a53..a5df1cf63c 100644 --- a/src/calibre/utils/rapydscript.py +++ b/src/calibre/utils/rapydscript.py @@ -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') diff --git a/src/pyj/viewer-main.pyj b/src/pyj/viewer-main.pyj new file mode 100644 index 0000000000..5d277a5e3a --- /dev/null +++ b/src/pyj/viewer-main.pyj @@ -0,0 +1,5 @@ +# vim:fileencoding=utf-8 +# License: GPL v3 Copyright: 2018, Kovid Goyal +from __python__ import bound_methods, hash_literals + +print('11111111111111', document.location.href)