WebBrowser/WebBrowserWindow.py

branch
QtWebEngine
changeset 4884
6983af705a7f
parent 4880
561f2bd9cfb9
child 4886
b56735d36159
equal deleted inserted replaced
4881:c269212cceac 4884:6983af705a7f
16 import os 16 import os
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, QThread, QTextCodec, QProcess 21 QUrl, QThread, QTextCodec, QProcess, QEvent
22 from PyQt5.QtGui import QDesktopServices, QKeySequence, QFont, QFontMetrics, \ 22 from PyQt5.QtGui import QDesktopServices, QKeySequence, QFont, QFontMetrics, \
23 QIcon 23 QIcon
24 from PyQt5.QtWidgets import QWidget, QVBoxLayout, QSizePolicy, QDockWidget, \ 24 from PyQt5.QtWidgets import QWidget, QVBoxLayout, QSizePolicy, QDockWidget, \
25 QComboBox, QLabel, QSplitter, QMenu, QToolButton, QLineEdit, \ 25 QComboBox, QLabel, QSplitter, QMenu, QToolButton, QLineEdit, \
26 QApplication, QWhatsThis, QDialog, QHBoxLayout, QProgressBar, QAction, \ 26 QApplication, QWhatsThis, QDialog, QHBoxLayout, QProgressBar, QAction, \
150 WebBrowserWindow.setUseQtHelp( 150 WebBrowserWindow.setUseQtHelp(
151 self.__fromEric or qthelp or bool(searchWord)) 151 self.__fromEric or qthelp or bool(searchWord))
152 152
153 self.webProfile(private) 153 self.webProfile(private)
154 self.networkManager() 154 self.networkManager()
155
156 self.__htmlFullScreen = False
157 self.__windowStates = 0
155 158
156 from .SearchWidget import SearchWidget 159 from .SearchWidget import SearchWidget
157 from .QtHelp.HelpTocWidget import HelpTocWidget 160 from .QtHelp.HelpTocWidget import HelpTocWidget
158 from .QtHelp.HelpIndexWidget import HelpIndexWidget 161 from .QtHelp.HelpIndexWidget import HelpIndexWidget
159 from .QtHelp.HelpSearchWidget import HelpSearchWidget 162 from .QtHelp.HelpSearchWidget import HelpSearchWidget
518 QWebEngineSettings.ScrollAnimatorEnabled, 521 QWebEngineSettings.ScrollAnimatorEnabled,
519 Preferences.getWebBrowser("ScrollAnimatorEnabled")) 522 Preferences.getWebBrowser("ScrollAnimatorEnabled"))
520 settings.setAttribute( 523 settings.setAttribute(
521 QWebEngineSettings.ErrorPageEnabled, 524 QWebEngineSettings.ErrorPageEnabled,
522 Preferences.getWebBrowser("ErrorPageEnabled")) 525 Preferences.getWebBrowser("ErrorPageEnabled"))
526 settings.setAttribute(
527 QWebEngineSettings.FullScreenSupportEnabled,
528 Preferences.getWebBrowser("FullScreenSupportEnabled"))
523 529
524 def __initActions(self): 530 def __initActions(self):
525 """ 531 """
526 Private method to define the user interface actions. 532 Private method to define the user interface actions.
527 """ 533 """
791 self.backAct = E5Action( 797 self.backAct = E5Action(
792 self.tr('Backward'), 798 self.tr('Backward'),
793 UI.PixmapCache.getIcon("back.png"), 799 UI.PixmapCache.getIcon("back.png"),
794 self.tr('&Backward'), 800 self.tr('&Backward'),
795 QKeySequence(self.tr("Alt+Left", "Go|Backward")), 801 QKeySequence(self.tr("Alt+Left", "Go|Backward")),
796 QKeySequence(self.tr("Backspace", "Go|Backward")), 802 0, self, 'webbrowser_go_backward')
797 self, 'webbrowser_go_backward')
798 self.backAct.setStatusTip(self.tr('Move one screen backward')) 803 self.backAct.setStatusTip(self.tr('Move one screen backward'))
799 self.backAct.setWhatsThis(self.tr( 804 self.backAct.setWhatsThis(self.tr(
800 """<b>Backward</b>""" 805 """<b>Backward</b>"""
801 """<p>Moves one screen backward. If none is""" 806 """<p>Moves one screen backward. If none is"""
802 """ available, this action is disabled.</p>""" 807 """ available, this action is disabled.</p>"""
808 self.forwardAct = E5Action( 813 self.forwardAct = E5Action(
809 self.tr('Forward'), 814 self.tr('Forward'),
810 UI.PixmapCache.getIcon("forward.png"), 815 UI.PixmapCache.getIcon("forward.png"),
811 self.tr('&Forward'), 816 self.tr('&Forward'),
812 QKeySequence(self.tr("Alt+Right", "Go|Forward")), 817 QKeySequence(self.tr("Alt+Right", "Go|Forward")),
813 QKeySequence(self.tr("Shift+Backspace", "Go|Forward")), 818 0, self, 'webbrowser_go_foreward')
814 self, 'webbrowser_go_foreward')
815 self.forwardAct.setStatusTip(self.tr( 819 self.forwardAct.setStatusTip(self.tr(
816 'Move one screen forward')) 820 'Move one screen forward'))
817 self.forwardAct.setWhatsThis(self.tr( 821 self.forwardAct.setWhatsThis(self.tr(
818 """<b>Forward</b>""" 822 """<b>Forward</b>"""
819 """<p>Moves one screen forward. If none is""" 823 """<p>Moves one screen forward. If none is"""
2575 2579
2576 state = self.saveState() 2580 state = self.saveState()
2577 Preferences.setWebBrowser("WebBrowserState", state) 2581 Preferences.setWebBrowser("WebBrowserState", state)
2578 2582
2579 if Preferences.getWebBrowser("SaveGeometry"): 2583 if Preferences.getWebBrowser("SaveGeometry"):
2580 if not self.__isFullScreen(): 2584 if not self.isFullScreen():
2581 Preferences.setGeometry("WebBrowserGeometry", 2585 Preferences.setGeometry("WebBrowserGeometry",
2582 self.saveGeometry()) 2586 self.saveGeometry())
2583 else: 2587 else:
2584 Preferences.setGeometry("WebBrowserGeometry", QByteArray()) 2588 Preferences.setGeometry("WebBrowserGeometry", QByteArray())
2585 2589
2660 2664
2661 def __viewFullScreen(self): 2665 def __viewFullScreen(self):
2662 """ 2666 """
2663 Private slot called to toggle fullscreen mode. 2667 Private slot called to toggle fullscreen mode.
2664 """ 2668 """
2665 if self.__isFullScreen(): 2669 if self.__htmlFullScreen:
2670 self.currentBrowser().triggerPageAction(
2671 QWebEnginePage.ExitFullScreen)
2672 return
2673
2674 if self.isFullScreen():
2666 # switch back to normal 2675 # switch back to normal
2667 self.setWindowState(self.windowState() & ~Qt.WindowFullScreen) 2676 self.showNormal()
2668 self.menuBar().show() 2677 self.menuBar().show()
2669 self.fullScreenAct.setIcon( 2678 self.fullScreenAct.setIcon(
2670 UI.PixmapCache.getIcon("windowFullscreen.png")) 2679 UI.PixmapCache.getIcon("windowFullscreen.png"))
2671 self.fullScreenAct.setIconText(self.tr('Full Screen')) 2680 self.fullScreenAct.setIconText(self.tr('Full Screen'))
2672 else: 2681 else:
2673 # switch to full screen 2682 # switch to full screen
2674 self.setWindowState(self.windowState() | Qt.WindowFullScreen) 2683 self.showFullScreen()
2675 self.menuBar().hide() 2684 self.menuBar().hide()
2676 self.fullScreenAct.setIcon( 2685 self.fullScreenAct.setIcon(
2677 UI.PixmapCache.getIcon("windowRestore.png")) 2686 UI.PixmapCache.getIcon("windowRestore.png"))
2678 self.fullScreenAct.setIconText(self.tr('Restore Window')) 2687 self.fullScreenAct.setIconText(self.tr('Restore Window'))
2679 2688
2680 def __isFullScreen(self): 2689 def enterHtmlFullScreen(self):
2681 """ 2690 """
2682 Private method to determine, if the window is in full screen mode. 2691 Public method to switch to full screen initiated by the
2683 2692 HTML page.
2684 @return flag indicating full screen mode (boolean) 2693 """
2685 """ 2694 self.showFullScreen()
2686 return self.windowState() & Qt.WindowFullScreen 2695 self.__htmlFullScreen = True
2687 2696
2688 def __copy(self): 2697 def __copy(self):
2689 """ 2698 """
2690 Private slot called to handle the copy action. 2699 Private slot called to handle the copy action.
2691 """ 2700 """
3959 self.__linkActivated(url) 3968 self.__linkActivated(url)
3960 return 3969 return
3961 3970
3962 super(WebBrowserWindow, self).keyPressEvent(evt) 3971 super(WebBrowserWindow, self).keyPressEvent(evt)
3963 3972
3973 def event(self, evt):
3974 """
3975 Public method handling events.
3976
3977 @param evt reference to the event
3978 @type QEvent
3979 @return flag indicating a handled event
3980 @rtype bool
3981 """
3982 if evt.type() == QEvent.WindowStateChange:
3983 if not bool(evt.oldState() & Qt.WindowFullScreen) and \
3984 bool(self.windowState() & Qt.WindowFullScreen):
3985 # enter full screen mode
3986 self.__windowStates = evt.oldState()
3987 elif bool(evt.oldState() & Qt.WindowFullScreen) and \
3988 not bool(self.windowState() & Qt.WindowFullScreen):
3989 # leave full screen mode
3990 self.setWindowState(self.__windowStates)
3991 self.__htmlFullScreen = False
3992
3993 return super(WebBrowserWindow, self).event(evt)
3994
3964 ########################################################################### 3995 ###########################################################################
3965 ## Interface to VirusTotal below ## 3996 ## Interface to VirusTotal below ##
3966 ########################################################################### 3997 ###########################################################################
3967 3998
3968 def __virusTotalScanCurrentSite(self): 3999 def __virusTotalScanCurrentSite(self):

eric ide

mercurial