eric6/WebBrowser/StatusBar/ImagesIcon.py

Wed, 30 Dec 2020 11:00:05 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Wed, 30 Dec 2020 11:00:05 +0100
changeset 7923
91e843545d9a
parent 7781
607a6098cb44
child 8143
2c730d5fd177
permissions
-rw-r--r--

Updated copyright for 2021.

4967
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
7923
91e843545d9a Updated copyright for 2021.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
3 # Copyright (c) 2016 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
4967
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing the images loading status bar icon.
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 #
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11 # This is modeled after the code found in Qupzilla
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12 # Copyright (C) 2014 David Rosca <nowrep@gmail.com>
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13 #
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15 from PyQt5.QtCore import pyqtSlot, Qt, QPoint
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16 from PyQt5.QtWidgets import QGraphicsColorizeEffect, QMenu
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17 from PyQt5.QtWebEngineWidgets import QWebEngineSettings
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19 from .StatusBarIcon import StatusBarIcon
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21 import UI.PixmapCache
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 import Preferences
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 class ImagesIcon(StatusBarIcon):
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 """
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 Class implementing the images loading status bar icon.
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 """
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 def __init__(self, window):
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 """
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 Constructor
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 @param window reference to the web browser window
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 @type WebBrowserWindow
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 """
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 super(ImagesIcon, self).__init__(window)
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 self.setToolTip(self.tr("Modify images loading settings temporarily"
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 " or globally"))
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 self.__icon = UI.PixmapCache.getPixmap("filePixmap").scaled(16, 16)
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 self.setPixmap(self.__icon)
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 self._window.tabWidget().currentChanged.connect(self.__updateIcon)
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 self.clicked.connect(self.__showMenu)
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 self.__updateIcon()
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 def preferencesChanged(self):
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 """
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 Public method to handle changes of the settings.
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 """
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 self.__updateIcon()
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 @pyqtSlot(QPoint)
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 def __showMenu(self, pos):
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 """
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 Private slot to show the menu.
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 @param pos position to show the menu at
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 @type QPoint
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 """
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 boldFont = self.font()
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 boldFont.setBold(True)
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 menu = QMenu()
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 menu.addAction(self.tr("Current Page Settings")).setFont(boldFont)
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 if self._testCurrentPageWebAttribute(
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 QWebEngineSettings.AutoLoadImages):
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 menu.addAction(self.tr("Disable loading images (temporarily)"),
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 self.__toggleLoadingImages)
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 else:
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 menu.addAction(self.tr("Enable loading images (temporarily)"),
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 self.__toggleLoadingImages)
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 menu.addSeparator()
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 menu.addAction(self.tr("Global Settings")).setFont(boldFont)
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 act = menu.addAction(self.tr("Automatically load images"))
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 act.setCheckable(True)
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 act.setChecked(Preferences.getWebBrowser("AutoLoadImages"))
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81 act.toggled.connect(self.__setGlobalLoadingImages)
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82
7759
51aa6c6b66f7 Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
83 menu.exec(pos)
4967
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 @pyqtSlot()
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 def __updateIcon(self):
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 """
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 Private slot to update the icon.
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 """
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 if self._testCurrentPageWebAttribute(
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 QWebEngineSettings.AutoLoadImages):
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 self.setGraphicsEffect(None)
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93 else:
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 effect = QGraphicsColorizeEffect(self)
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 effect.setColor(Qt.gray)
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 self.setGraphicsEffect(effect)
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 @pyqtSlot()
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 def __toggleLoadingImages(self):
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 """
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 Private slot to toggle the images loading setting.
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102 """
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 if self._currentPage() is None:
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 return
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106 current = self._testCurrentPageWebAttribute(
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107 QWebEngineSettings.AutoLoadImages)
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 self._setCurrentPageWebAttribute(QWebEngineSettings.AutoLoadImages,
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 not current)
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 if current:
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 # reload page upon disabling loading images
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 self._window.currentBrowser().reload()
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 self.__updateIcon()
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 @pyqtSlot(bool)
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118 def __setGlobalLoadingImages(self, enable):
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 """
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 Private slot to toggle the global images loading setting.
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 @param enable flag indicating the state to set
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123 @type bool
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124 """
6127
128d9567a533 Some improvements of the Web Browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
125 from WebBrowser.WebBrowserWindow import WebBrowserWindow
128d9567a533 Some improvements of the Web Browser NG.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
126 WebBrowserWindow.webSettings().setAttribute(
4967
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127 QWebEngineSettings.AutoLoadImages, enable)
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128 Preferences.setWebBrowser("AutoLoadImages", enable)
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130 Preferences.syncPreferences()
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131 self._window.preferencesChanged()
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132
d9edf6517263 Implemented the Images Loading status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 self.__updateIcon()
4976
fa68a30f3cd0 Cleaned up the ImagesIcon code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4967
diff changeset
134
fa68a30f3cd0 Cleaned up the ImagesIcon code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4967
diff changeset
135 if not enable:
fa68a30f3cd0 Cleaned up the ImagesIcon code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4967
diff changeset
136 # reload page upon disabling loading images
fa68a30f3cd0 Cleaned up the ImagesIcon code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4967
diff changeset
137 self._window.currentBrowser().reload()

eric ide

mercurial