9 |
9 |
10 import os |
10 import os |
11 import shutil |
11 import shutil |
12 import sys |
12 import sys |
13 import functools |
13 import functools |
|
14 import contextlib |
14 |
15 |
15 from PyQt5.QtCore import ( |
16 from PyQt5.QtCore import ( |
16 pyqtSlot, pyqtSignal, Qt, QByteArray, QSize, QTimer, QUrl, QProcess, |
17 pyqtSlot, pyqtSignal, Qt, QByteArray, QSize, QTimer, QUrl, QProcess, |
17 QEvent, QFileInfo |
18 QEvent, QFileInfo |
18 ) |
19 ) |
644 settings.setAttribute( |
645 settings.setAttribute( |
645 QWebEngineSettings.WebAttribute.DnsPrefetchEnabled, |
646 QWebEngineSettings.WebAttribute.DnsPrefetchEnabled, |
646 Preferences.getWebBrowser( |
647 Preferences.getWebBrowser( |
647 "DnsPrefetchEnabled")) |
648 "DnsPrefetchEnabled")) |
648 |
649 |
649 try: |
650 with contextlib.suppress(AttributeError, KeyError): |
650 # Qt 5.13 |
651 # Qt 5.13 |
651 settings.setAttribute( |
652 settings.setAttribute( |
652 QWebEngineSettings.WebAttribute.PdfViewerEnabled, |
653 QWebEngineSettings.WebAttribute.PdfViewerEnabled, |
653 Preferences.getWebBrowser( |
654 Preferences.getWebBrowser( |
654 "PdfViewerEnabled")) |
655 "PdfViewerEnabled")) |
655 except (AttributeError, KeyError): |
|
656 pass |
|
657 |
656 |
658 def __initActions(self): |
657 def __initActions(self): |
659 """ |
658 """ |
660 Private method to define the user interface actions. |
659 Private method to define the user interface actions. |
661 """ |
660 """ |
2803 Preferences.setGeometry("WebBrowserGeometry", |
2802 Preferences.setGeometry("WebBrowserGeometry", |
2804 self.saveGeometry()) |
2803 self.saveGeometry()) |
2805 else: |
2804 else: |
2806 Preferences.setGeometry("WebBrowserGeometry", QByteArray()) |
2805 Preferences.setGeometry("WebBrowserGeometry", QByteArray()) |
2807 |
2806 |
2808 try: |
2807 with contextlib.suppress(ValueError): |
2809 browserIndex = WebBrowserWindow.BrowserWindows.index(self) |
2808 browserIndex = WebBrowserWindow.BrowserWindows.index(self) |
2810 if len(WebBrowserWindow.BrowserWindows) and browserIndex == 0: |
2809 if len(WebBrowserWindow.BrowserWindows) and browserIndex == 0: |
2811 if len(WebBrowserWindow.BrowserWindows) > 1: |
2810 if len(WebBrowserWindow.BrowserWindows) > 1: |
2812 # first window will be deleted |
2811 # first window will be deleted |
2813 QDesktopServices.setUrlHandler( |
2812 QDesktopServices.setUrlHandler( |
2819 else: |
2818 else: |
2820 QDesktopServices.unsetUrlHandler("http") |
2819 QDesktopServices.unsetUrlHandler("http") |
2821 QDesktopServices.unsetUrlHandler("https") |
2820 QDesktopServices.unsetUrlHandler("https") |
2822 if len(WebBrowserWindow.BrowserWindows) > 0: |
2821 if len(WebBrowserWindow.BrowserWindows) > 0: |
2823 del WebBrowserWindow.BrowserWindows[browserIndex] |
2822 del WebBrowserWindow.BrowserWindows[browserIndex] |
2824 except ValueError: |
|
2825 pass |
|
2826 |
2823 |
2827 Preferences.syncPreferences() |
2824 Preferences.syncPreferences() |
2828 if ( |
2825 if ( |
2829 not WebBrowserWindow._performingShutdown and |
2826 not WebBrowserWindow._performingShutdown and |
2830 len(WebBrowserWindow.BrowserWindows) == 0 |
2827 len(WebBrowserWindow.BrowserWindows) == 0 |
3212 else: |
3209 else: |
3213 profile.setHttpCacheType( |
3210 profile.setHttpCacheType( |
3214 QWebEngineProfile.HttpCacheType.MemoryHttpCache) |
3211 QWebEngineProfile.HttpCacheType.MemoryHttpCache) |
3215 profile.setHttpCacheMaximumSize(0) |
3212 profile.setHttpCacheMaximumSize(0) |
3216 |
3213 |
3217 try: |
3214 with contextlib.suppress(AttributeError): |
3218 profile.setSpellCheckEnabled( |
3215 profile.setSpellCheckEnabled( |
3219 Preferences.getWebBrowser("SpellCheckEnabled")) |
3216 Preferences.getWebBrowser("SpellCheckEnabled")) |
3220 profile.setSpellCheckLanguages( |
3217 profile.setSpellCheckLanguages( |
3221 Preferences.getWebBrowser("SpellCheckLanguages")) |
3218 Preferences.getWebBrowser("SpellCheckLanguages")) |
3222 except AttributeError: |
|
3223 # not yet supported |
|
3224 pass |
|
3225 |
3219 |
3226 self.__virusTotal.preferencesChanged() |
3220 self.__virusTotal.preferencesChanged() |
3227 if ( |
3221 if ( |
3228 not Preferences.getWebBrowser("VirusTotalEnabled") or |
3222 not Preferences.getWebBrowser("VirusTotalEnabled") or |
3229 Preferences.getWebBrowser("VirusTotalServiceKey") == "" |
3223 Preferences.getWebBrowser("VirusTotalServiceKey") == "" |
4793 "persistentstorage")) |
4787 "persistentstorage")) |
4794 cls._webProfile.setPersistentCookiesPolicy( |
4788 cls._webProfile.setPersistentCookiesPolicy( |
4795 QWebEngineProfile.PersistentCookiesPolicy |
4789 QWebEngineProfile.PersistentCookiesPolicy |
4796 .AllowPersistentCookies) |
4790 .AllowPersistentCookies) |
4797 |
4791 |
4798 try: |
4792 with contextlib.suppress(AttributeError): |
4799 cls._webProfile.setSpellCheckEnabled( |
4793 cls._webProfile.setSpellCheckEnabled( |
4800 Preferences.getWebBrowser("SpellCheckEnabled")) |
4794 Preferences.getWebBrowser("SpellCheckEnabled")) |
4801 cls._webProfile.setSpellCheckLanguages( |
4795 cls._webProfile.setSpellCheckLanguages( |
4802 Preferences.getWebBrowser("SpellCheckLanguages")) |
4796 Preferences.getWebBrowser("SpellCheckLanguages")) |
4803 except AttributeError: |
|
4804 # not yet supported |
|
4805 pass |
|
4806 |
4797 |
4807 # Setup QWebChannel user scripts |
4798 # Setup QWebChannel user scripts |
4808 from .WebBrowserPage import WebBrowserPage |
4799 from .WebBrowserPage import WebBrowserPage |
4809 |
4800 |
4810 # WebChannel for SafeJsWorld |
4801 # WebChannel for SafeJsWorld |