17 import shutil |
17 import shutil |
18 import sys |
18 import sys |
19 |
19 |
20 from PyQt5.QtCore import pyqtSlot, pyqtSignal, Qt, QByteArray, QSize, QTimer, \ |
20 from PyQt5.QtCore import pyqtSlot, pyqtSignal, Qt, QByteArray, QSize, QTimer, \ |
21 QUrl, QTextCodec, QProcess, QEvent |
21 QUrl, QTextCodec, QProcess, QEvent |
22 from PyQt5.QtGui import QDesktopServices, QKeySequence, QFont, QFontMetrics, \ |
22 from PyQt5.QtGui import QDesktopServices, QKeySequence, QFont, QFontMetrics |
23 QPalette |
|
24 from PyQt5.QtWidgets import QWidget, QVBoxLayout, QSizePolicy, QDockWidget, \ |
23 from PyQt5.QtWidgets import QWidget, QVBoxLayout, QSizePolicy, QDockWidget, \ |
25 QComboBox, QLabel, QSplitter, QMenu, QToolButton, QLineEdit, \ |
24 QComboBox, QLabel, QSplitter, QMenu, QToolButton, QLineEdit, \ |
26 QApplication, QWhatsThis, QDialog, QHBoxLayout, QProgressBar, QAction, \ |
25 QApplication, QWhatsThis, QDialog, QHBoxLayout, QProgressBar, QAction, \ |
27 QInputDialog |
26 QInputDialog |
28 from PyQt5.QtWebEngineWidgets import QWebEngineSettings, QWebEnginePage, \ |
27 from PyQt5.QtWebEngineWidgets import QWebEngineSettings, QWebEnginePage, \ |
2287 |
2286 |
2288 def __addBookmark(self): |
2287 def __addBookmark(self): |
2289 """ |
2288 """ |
2290 Private slot called to add the displayed file to the bookmarks. |
2289 Private slot called to add the displayed file to the bookmarks. |
2291 """ |
2290 """ |
|
2291 from .WebBrowserPage import WebBrowserPage |
|
2292 |
2292 view = self.currentBrowser() |
2293 view = self.currentBrowser() |
2293 view.addBookmark() |
2294 view.addBookmark() |
2294 urlStr = bytes(view.url().toEncoded()).decode() |
2295 urlStr = bytes(view.url().toEncoded()).decode() |
2295 title = view.title() |
2296 title = view.title() |
2296 |
2297 |
2297 script = Scripts.getAllMetaAttributes() |
2298 script = Scripts.getAllMetaAttributes() |
2298 view.page().runJavaScript( |
2299 view.page().runJavaScript( |
2299 script, |
2300 script, |
|
2301 WebBrowserPage.SafeJsWorld, |
2300 lambda res: self.__addBookmarkCallback(urlStr, title, res)) |
2302 lambda res: self.__addBookmarkCallback(urlStr, title, res)) |
2301 |
2303 |
2302 def __addBookmarkCallback(self, url, title, res): |
2304 def __addBookmarkCallback(self, url, title, res): |
2303 """ |
2305 """ |
2304 Private callback method of __addBookmark(). |
2306 Private callback method of __addBookmark(). |
2349 |
2351 |
2350 def bookmarkAll(self): |
2352 def bookmarkAll(self): |
2351 """ |
2353 """ |
2352 Public slot to bookmark all open tabs. |
2354 Public slot to bookmark all open tabs. |
2353 """ |
2355 """ |
|
2356 from .WebBrowserPage import WebBrowserPage |
2354 from .Bookmarks.AddBookmarkDialog import AddBookmarkDialog |
2357 from .Bookmarks.AddBookmarkDialog import AddBookmarkDialog |
|
2358 |
2355 dlg = AddBookmarkDialog() |
2359 dlg = AddBookmarkDialog() |
2356 dlg.setFolder(True) |
2360 dlg.setFolder(True) |
2357 dlg.setTitle(self.tr("Saved Tabs")) |
2361 dlg.setTitle(self.tr("Saved Tabs")) |
2358 dlg.exec_() |
2362 dlg.exec_() |
2359 |
2363 |
2366 title = view.title() |
2370 title = view.title() |
2367 |
2371 |
2368 script = Scripts.getAllMetaAttributes() |
2372 script = Scripts.getAllMetaAttributes() |
2369 view.page().runJavaScript( |
2373 view.page().runJavaScript( |
2370 script, |
2374 script, |
|
2375 WebBrowserPage.SafeJsWorld, |
2371 lambda res: self.__bookmarkAllCallback(folder, urlStr, |
2376 lambda res: self.__bookmarkAllCallback(folder, urlStr, |
2372 title, res)) |
2377 title, res)) |
2373 |
2378 |
2374 def __bookmarkAllCallback(self, folder, url, title, res): |
2379 def __bookmarkAllCallback(self, folder, url, title, res): |
2375 """ |
2380 """ |
3996 oldScript = self.webProfile().scripts().findScript(name) |
4001 oldScript = self.webProfile().scripts().findScript(name) |
3997 if not oldScript.isNull(): |
4002 if not oldScript.isNull(): |
3998 self.webProfile().scripts().remove(oldScript) |
4003 self.webProfile().scripts().remove(oldScript) |
3999 |
4004 |
4000 if userStyle: |
4005 if userStyle: |
|
4006 from .WebBrowserPage import WebBrowserPage |
|
4007 |
4001 script = QWebEngineScript() |
4008 script = QWebEngineScript() |
4002 script.setName(name) |
4009 script.setName(name) |
4003 script.setInjectionPoint(QWebEngineScript.DocumentCreation) |
4010 script.setInjectionPoint(QWebEngineScript.DocumentCreation) |
4004 script.setWorldId(QWebEngineScript.ApplicationWorld) |
4011 script.setWorldId(WebBrowserPage.SafeJsWorld) |
4005 script.setRunsOnSubFrames(True) |
4012 script.setRunsOnSubFrames(True) |
4006 script.setSourceCode(Scripts.setStyleSheet(userStyle)) |
4013 script.setSourceCode(Scripts.setStyleSheet(userStyle)) |
4007 self.webProfile().scripts().insert(script) |
4014 self.webProfile().scripts().insert(script) |
4008 |
4015 |
4009 ########################################## |
4016 ########################################## |
4106 "persistentstorage")) |
4113 "persistentstorage")) |
4107 cls._webProfile.setPersistentCookiesPolicy( |
4114 cls._webProfile.setPersistentCookiesPolicy( |
4108 QWebEngineProfile.AllowPersistentCookies) |
4115 QWebEngineProfile.AllowPersistentCookies) |
4109 |
4116 |
4110 # Setup QWebChannel user script |
4117 # Setup QWebChannel user script |
|
4118 from .WebBrowserPage import WebBrowserPage |
|
4119 |
4111 script = QWebEngineScript() |
4120 script = QWebEngineScript() |
4112 script.setName("_eric_webchannel") |
4121 script.setName("_eric_webchannel") |
4113 script.setInjectionPoint(QWebEngineScript.DocumentCreation) |
4122 script.setInjectionPoint(QWebEngineScript.DocumentCreation) |
4114 script.setWorldId(QWebEngineScript.MainWorld) |
4123 script.setWorldId(WebBrowserPage.SafeJsWorld) |
4115 script.setRunsOnSubFrames(True) |
4124 script.setRunsOnSubFrames(True) |
4116 script.setSourceCode(Scripts.setupWebChannel()) |
4125 script.setSourceCode(Scripts.setupWebChannel()) |
4117 cls._webProfile.scripts().insert(script) |
4126 cls._webProfile.scripts().insert(script) |
4118 |
4127 |
4119 return cls._webProfile |
4128 return cls._webProfile |