From 2cce6ea49696927300d324637255d3c2cd377e8b Mon Sep 17 00:00:00 2001 From: Harald Weiner Date: Fri, 28 Jul 2017 07:07:57 +0200 Subject: [PATCH 4/4] fixes #175 (Live Preview Mode Executes JavaScript) --- data/ui/RemarkableWindow.ui | 9 +++++++++ remarkable/RemarkableWindow.py | 26 ++++++++++++++++++++++---- 2 files changed, 31 insertions(+), 4 deletions(-) diff --git a/data/ui/RemarkableWindow.ui b/data/ui/RemarkableWindow.ui index ab0007c..ca2396e 100644 --- a/data/ui/RemarkableWindow.ui +++ b/data/ui/RemarkableWindow.ui @@ -405,6 +405,15 @@ True + + + True + False + Enable Java-Script + True + True + + True diff --git a/remarkable/RemarkableWindow.py b/remarkable/RemarkableWindow.py index ea00be9..c15886a 100644 --- a/remarkable/RemarkableWindow.py +++ b/remarkable/RemarkableWindow.py @@ -114,8 +114,8 @@ class RemarkableWindow(Window): self.text_view.set_buffer(self.text_buffer) self.text_view.set_wrap_mode(Gtk.WrapMode.WORD) - my_settings = self.create_webkit_settings() - self.live_preview = WebKit2.WebView.new_with_settings(my_settings) + self.webkit_settings = self.create_webkit_settings() + self.live_preview = WebKit2.WebView.new_with_settings(self.webkit_settings) self.zoom_out(self.live_preview) self.scrolledwindow_text_view = Gtk.ScrolledWindow() @@ -199,7 +199,8 @@ class RemarkableWindow(Window): if not os.path.isfile(self.settings_path): self.remarkable_settings = {} self.remarkable_settings['css'] = '' - self.remarkable_settings['font'] = "Sans 10" + self.remarkable_settings['font'] = "Sans 10" + self.remarkable_settings['js'] = True self.remarkable_settings['line-numbers'] = True self.remarkable_settings['live-preview'] = True self.remarkable_settings['nightmode'] = False @@ -234,6 +235,12 @@ class RemarkableWindow(Window): # Disable word wrap on startup self.builder.get_object("menuitem_word_wrap").set_active(False) self.on_menuitem_word_wrap_activate(self) + + if not 'js' in self.remarkable_settings: + self.remarkable_settings['js'] = True + if self.remarkable_settings['js'] == False: + # Disable Live Preview on startup + self.builder.get_object("menuitem_js").set_active(False) if self.remarkable_settings['live-preview'] == False: # Disable Live Preview on startup @@ -812,7 +819,16 @@ class RemarkableWindow(Window): self.builder.get_object("toolbar1").set_visible(True) self.update_live_preview(self) self.write_settings() - + + def on_menuitem_js_activate(self, widget): + self.toggle_js(self) + + def toggle_js(self, widget): + state = self.webkit_settings.get_enable_javascript() + state = not state + self.remarkable_settings['js'] = state + self.webkit_settings.set_enable_javascript(state) + self.write_settings() def on_menuitem_swap_activate(self, widget): if self.live_preview.get_visible(): @@ -1456,6 +1472,8 @@ class RemarkableWindow(Window): def create_webkit_settings(self): result = WebKit2.Settings() result.set_enable_write_console_messages_to_stdout(False) # Suppress .js output + #js = self.remarkable_settings['js'] + result.set_enable_javascript(True) # JS-Kill-Switch for issue #175 return result """ -- 2.16.2