summarylogtreecommitdiffstats
path: root/0003-fixes-184-port-to-WebKit2Gtk.patch
blob: 55b4a3c08b54ab09e6d298d8907c7a52adc75ece (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
From fafd97f41b5fdc68357f54a6e0a2557a7809c36a Mon Sep 17 00:00:00 2001
From: Harald Weiner <timeraider@gmx.at>
Date: Sun, 23 Jul 2017 02:14:23 +0200
Subject: [PATCH 3/4] fixes #184 (port to WebKit2Gtk)

---
 remarkable/RemarkableWindow.py | 63 +++++++++++++++++++++++++++++++-----------
 1 file changed, 47 insertions(+), 16 deletions(-)

diff --git a/remarkable/RemarkableWindow.py b/remarkable/RemarkableWindow.py
index 12802f3..ea00be9 100644
--- a/remarkable/RemarkableWindow.py
+++ b/remarkable/RemarkableWindow.py
@@ -24,10 +24,10 @@
 import gi
 gi.require_version('Gtk', '3.0')
 gi.require_version('GtkSource', '3.0')
-gi.require_version('WebKit', '3.0')
+gi.require_version('WebKit2', '4.0')
 
 from bs4 import BeautifulSoup
-from gi.repository import Gdk, Gtk, GtkSource, Pango, WebKit
+from gi.repository import Gdk, Gtk, GtkSource, Pango, WebKit2
 from locale import gettext as _
 from urllib.request import urlopen
 import markdown
@@ -113,10 +113,10 @@ class RemarkableWindow(Window):
         self.text_buffer.connect("changed", self.on_text_view_changed)
         self.text_view.set_buffer(self.text_buffer)
         self.text_view.set_wrap_mode(Gtk.WrapMode.WORD)
-
-        self.live_preview = WebKit.WebView()
-        self.live_preview.connect("console-message", self._javascript_console_message) # Suppress .js output
-        self.live_preview.zoom_out()
+        
+        my_settings = self.create_webkit_settings()
+        self.live_preview = WebKit2.WebView.new_with_settings(my_settings)
+        self.zoom_out(self.live_preview)
 
         self.scrolledwindow_text_view = Gtk.ScrolledWindow()
         self.scrolledwindow_text_view.add(self.text_view)
@@ -626,11 +626,11 @@ class RemarkableWindow(Window):
         self.redo(self)
 
     def on_toolbutton_zoom_in_clicked(self, widget):
-        self.live_preview.zoom_in()
+        self.zoom_in(self.live_preview)
         self.scrollPreviewToFix(self)
 
     def on_toolbutton_zoom_out_clicked(self, widget):
-        self.live_preview.zoom_out()
+        self.zoom_out(self.live_preview)
         self.scrollPreviewToFix(self)
 
     def redo(self, widget):
@@ -1253,7 +1253,7 @@ class RemarkableWindow(Window):
         styles.css = styles.handwriting_css
         self.update_style(self)
         self.update_live_preview(self)
-        self.live_preview.zoom_in()
+        self.zoom_in(self.live_preview)
         self.remarkable_settings['style'] = "handwriting_css"
         self.write_settings()
 
@@ -1351,12 +1351,12 @@ class RemarkableWindow(Window):
         window_feedback.set_title("Feedback Form")
         window_feedback.set_default_size(640, 640)
         window_feedback.set_position(Gtk.WindowPosition.CENTER)
-        feedback_browser = WebKit.WebView()
-        feedback_browser.connect("console-message", self._javascript_console_message) # Suppress .js output
+        my_settings = self.create_webkit_settings()
+        feedback_browser = WebKit2.WebView.new_with_settings(my_settings)
         feedback_scroller = Gtk.ScrolledWindow()
         feedback_scroller.add(feedback_browser)
         window_feedback.add(feedback_scroller)
-        feedback_browser.open("https://jamiemcgowan.typeform.com/to/ng5Lhc")
+        feedback_browser.load_uri("https://jamiemcgowan.typeform.com/to/ng5Lhc")
         window_feedback.show_all()
 
     def on_menuitem_about_activate(self, widget):
@@ -1447,14 +1447,45 @@ class RemarkableWindow(Window):
         html = self.default_html_start + html_middle + self.default_html_end
 
         # Update the display, supporting relative paths to local images
-        self.live_preview.load_string(html, "text/html", "utf-8", "file://{}".format(os.path.abspath(self.name)))
+        self.live_preview.load_html(html, "file://{}".format(os.path.abspath(self.name)))
 
     """
-        This function suppresses the messages from the WebKit (live preview) console
+        This function returns WebKit settings instance to suppress
+        the messages from the WebKit (live preview) console
     """
-    def _javascript_console_message(self, view, message, line, sourceid):
-        return True
+    def create_webkit_settings(self):
+        result = WebKit2.Settings()
+        result.set_enable_write_console_messages_to_stdout(False) # Suppress .js output
+        return result
 
+    """
+        This function implements zoom_in for WebKit2.WebView
+    """
+    def zoom_in(self, webView):
+        zoom_level = webView.get_zoom_level()
+        zoom_level = zoom_level + self.get_zoom_step()
+        webView.set_zoom_level(zoom_level)
+
+    """
+        This function implements zoom_out for WebKit2.WebView
+    """
+    def zoom_out(self, webView):
+        zoom_level = webView.get_zoom_level()
+        zoom_level = zoom_level - self.get_zoom_step()
+        webView.set_zoom_level(zoom_level)
+
+    """
+        This function returns the same magic number as in previous WebKit API:
+        https://lazka.github.io/pgi-docs/WebKit-3.0/classes/WebSettings.html#WebKit.WebSettings.props.zoom_step
+    """
+    def get_zoom_step(self):
+        return 0.10000000149011612
+
+    """
+        This function resets the zoom_level to the default value
+    """
+    def reset_zoom_level(self, webView):
+       webView.set_zoom_level(1.0)
 
     """
         This function deletes any temporary files that were created during execution
-- 
2.16.2