WebBrowser/WebBrowserView.py

changeset 5784
362bbcc49ac1
parent 5740
292538236234
child 5785
7c7c5f9e4fad
equal deleted inserted replaced
5783:44a9f08de394 5784:362bbcc49ac1
15 pass 15 pass
16 16
17 import os 17 import os
18 18
19 from PyQt5.QtCore import pyqtSignal, QUrl, QFileInfo, Qt, QTimer, QEvent, \ 19 from PyQt5.QtCore import pyqtSignal, QUrl, QFileInfo, Qt, QTimer, QEvent, \
20 QPoint, QDateTime, QStandardPaths 20 QPoint, QPointF, QDateTime, QStandardPaths, QByteArray, QIODevice, \
21 QDataStream
21 from PyQt5.QtGui import QDesktopServices, QClipboard, QIcon, \ 22 from PyQt5.QtGui import QDesktopServices, QClipboard, QIcon, \
22 QContextMenuEvent, QPixmap 23 QContextMenuEvent, QPixmap
23 from PyQt5.QtWidgets import qApp, QStyle, QMenu, QApplication 24 from PyQt5.QtWidgets import qApp, QStyle, QMenu, QApplication
24 from PyQt5.QtWebEngineWidgets import QWebEngineView, QWebEnginePage, \ 25 from PyQt5.QtWebEngineWidgets import QWebEngineView, QWebEnginePage, \
25 QWebEngineDownloadItem 26 QWebEngineDownloadItem
120 121
121 self.__mw.personalInformationManager().connectPage(self.page()) 122 self.__mw.personalInformationManager().connectPage(self.page())
122 123
123 self.__inspector = None 124 self.__inspector = None
124 WebInspector.registerView(self) 125 WebInspector.registerView(self)
126
127 self.__restoreData = None
125 128
126 if qVersionTuple() >= (5, 8, 0): 129 if qVersionTuple() >= (5, 8, 0):
127 if self.parentWidget() is not None: 130 if self.parentWidget() is not None:
128 self.parentWidget().installEventFilter(self) 131 self.parentWidget().installEventFilter(self)
129 132
1892 def __resetSpeedDials(self): 1895 def __resetSpeedDials(self):
1893 """ 1896 """
1894 Private slot to reset all speed dials to the default pages. 1897 Private slot to reset all speed dials to the default pages.
1895 """ 1898 """
1896 self.__speedDial.resetDials() 1899 self.__speedDial.resetDials()
1900
1901 ###########################################################################
1902 ## Methods below implement session related functions
1903 ###########################################################################
1904
1905 def storeSessionData(self, data):
1906 """
1907
1908 """
1909 self.__restoreData = data
1910
1911 def showEvent(self, evt):
1912 """
1913
1914 """
1915 if self.__restoreData:
1916 self.loadFromSessionData(self.__restoreData)
1917 self.__restoreData = None
1918
1919 def getSessionData(self):
1920 """
1921 Public method to populate the session data.
1922
1923 @return dictionary containing the session data
1924 @rtype dict
1925 """
1926 if self.__restoreData:
1927 # page has not been shown yet
1928 return self.__restoreData
1929
1930
1931 sessionData = {}
1932 ## page = self.page()
1933
1934 # 1. zoom factor
1935 sessionData["ZoomFactor"] = self.__page.zoomFactor()
1936
1937 # 2. scroll position
1938 scrollPos = self.__page.scrollPosition()
1939 sessionData["ScrollPosition"] = {
1940 "x": scrollPos.x(),
1941 "y": scrollPos.y(),
1942 }
1943
1944 # 3. page history
1945 historyArray = QByteArray()
1946 stream = QDataStream(historyArray, QIODevice.WriteOnly)
1947 stream << self.__page.history()
1948 sessionData["History"] = str(
1949 historyArray.toBase64(QByteArray.Base64UrlEncoding),
1950 encoding="ascii")
1951 sessionData["HistoryIndex"] = self.__page.history().currentItemIndex()
1952
1953 # 4. current URL and title
1954 sessionData["Url"] = self.url().toString()
1955 sessionData["Title"] = self.title()
1956
1957 # 5. web icon
1958 iconArray = QByteArray()
1959 stream = QDataStream(iconArray, QIODevice.WriteOnly)
1960 stream << self.__page.icon()
1961 sessionData["Icon"] = str(iconArray.toBase64(), encoding="ascii")
1962
1963 return sessionData
1964
1965 def loadFromSessionData(self, sessionData):
1966 """
1967 Public method to load the session data.
1968
1969 @param sessionData dictionary containing the session data as
1970 generated by getSessionData()
1971 @type dict
1972 """
1973 ## page = self.page()
1974
1975 # 1. page history
1976 if "History" in sessionData:
1977 historyArray = QByteArray.fromBase64(
1978 sessionData["History"].encode("ascii"),
1979 QByteArray.Base64UrlEncoding)
1980 stream = QDataStream(historyArray, QIODevice.ReadOnly)
1981 stream >> self.__page.history()
1982
1983 if "HistoryIndex" in sessionData:
1984 item = self.__page.history().itemAt(sessionData["HistoryIndex"])
1985 if item is not None:
1986 self.__page.history().goToItem(item)
1987
1988 # 2. zoom factor
1989 if "ZoomFactor" in sessionData:
1990 self.__page.setZoomFactor(sessionData["ZoomFactor"])
1991
1992 # 3. scroll position
1993 if "ScrollPosition" in sessionData:
1994 scrollPos = sessionData["ScrollPosition"]
1995 self.__page.scrollTo(QPointF(scrollPos["x"], scrollPos["y"]))

eric ide

mercurial