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