From 929d6adf6fa000530f1097c47d235b39ecc6dbfb Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sun, 15 Jan 2012 11:46:21 +0530 Subject: [PATCH] ... --- src/calibre/gui2/viewer/documentview.py | 19 +++++++++---------- src/calibre/gui2/viewer/javascript.py | 6 +++--- src/calibre/gui2/viewer/main.py | 2 +- 3 files changed, 13 insertions(+), 14 deletions(-) diff --git a/src/calibre/gui2/viewer/documentview.py b/src/calibre/gui2/viewer/documentview.py index 6b030aedb8..9009182cb5 100644 --- a/src/calibre/gui2/viewer/documentview.py +++ b/src/calibre/gui2/viewer/documentview.py @@ -179,14 +179,16 @@ class Document(QWebPage): # {{{ self.misc_config() self.after_load() - def __init__(self, shortcuts, parent=None, resize_callback=lambda: None): + def __init__(self, shortcuts, parent=None, resize_callback=lambda: None, + debug_javascript=False): QWebPage.__init__(self, parent) self.setObjectName("py_bridge") - self.debug_javascript = False + self.debug_javascript = debug_javascript self.resize_callback = resize_callback self.current_language = None self.loaded_javascript = False - self.js_loader = None + self.js_loader = JavaScriptLoader( + dynamic_coffeescript=self.debug_javascript) self.setLinkDelegationPolicy(self.DelegateAllLinks) self.scroll_marks = [] @@ -252,9 +254,6 @@ class Document(QWebPage): # {{{ window.py_bridge.window_resized(); } ''') - if self.js_loader is None: - self.js_loader = JavaScriptLoader( - dynamic_coffeescript=self.debug_javascript) self.loaded_lang = self.js_loader(self.mainFrame().evaluateJavaScript, self.current_language, self.hyphenate_default_lang) @@ -470,11 +469,10 @@ class DocumentView(QWebView): # {{{ magnification_changed = pyqtSignal(object) DISABLED_BRUSH = QBrush(Qt.lightGray, Qt.Dense5Pattern) - def __init__(self, *args): - QWebView.__init__(self, *args) + def initialize_view(self, debug_javascript=False): self.flipper = SlideFlip(self) self.is_auto_repeat_event = False - self.debug_javascript = False + self.debug_javascript = debug_javascript self.shortcuts = Shortcuts(SHORTCUTS, 'shortcuts/viewer') self.self_closing_pat = re.compile(r'<([a-z1-6]+)\s+([^>]+)/>', re.IGNORECASE) @@ -483,7 +481,8 @@ class DocumentView(QWebView): # {{{ self.initial_pos = 0.0 self.to_bottom = False self.document = Document(self.shortcuts, parent=self, - resize_callback=self.viewport_resized) + resize_callback=self.viewport_resized, + debug_javascript=debug_javascript) self.setPage(self.document) self.manager = None self._reference_mode = False diff --git a/src/calibre/gui2/viewer/javascript.py b/src/calibre/gui2/viewer/javascript.py index b8fdc154c3..ab8492dc6f 100644 --- a/src/calibre/gui2/viewer/javascript.py +++ b/src/calibre/gui2/viewer/javascript.py @@ -39,14 +39,14 @@ class JavaScriptLoader(object): self._cache = {} self._hp_cache = {} - def __getattr__(self, name): + def get(self, name): ans = self._cache.get(name, None) if ans is None: src = self.CS.get(name, None) if src is None: src = self.JS.get(name, None) if src is None: - raise AttributeError('No such resource: %s'%name) + raise KeyError('No such resource: %s'%name) ans = P(src, data=True, allow_user_override=False).decode('utf-8') else: @@ -70,7 +70,7 @@ class JavaScriptLoader(object): def __call__(self, evaljs, lang, default_lang): for x in self.ORDER: - src = getattr(self, x) + src = self.get(x) evaljs(src) def lang_name(l): diff --git a/src/calibre/gui2/viewer/main.py b/src/calibre/gui2/viewer/main.py index 10fb6ca93a..2cf53824c4 100644 --- a/src/calibre/gui2/viewer/main.py +++ b/src/calibre/gui2/viewer/main.py @@ -175,6 +175,7 @@ class EbookViewer(MainWindow, Ui_EbookViewer): def __init__(self, pathtoebook=None, debug_javascript=False, open_at=None): MainWindow.__init__(self, None) self.setupUi(self) + self.view.initialize_view(debug_javascript) self.view.magnification_changed.connect(self.magnification_changed) self.show_toc_on_open = False self.current_book_has_toc = False @@ -215,7 +216,6 @@ class EbookViewer(MainWindow, Ui_EbookViewer): self.search.setMinimumWidth(200) self.tool_bar2.insertWidget(self.action_find_next, self.search) self.view.set_manager(self) - self.view.document.debug_javascript = debug_javascript self.pi = ProgressIndicator(self) self.toc.setVisible(False) self.action_quit = QAction(self)