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): |