WebBrowser/WebBrowserWindow.py

changeset 5001
08eaee907686
parent 4993
ebb8eaa326ba
child 5015
ca1d44f0f6b2
equal deleted inserted replaced
5000:1a86b869d8a9 5001:08eaee907686
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

eric ide

mercurial