eric6/WebBrowser/StatusBar/ImagesIcon.py

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

eric ide

mercurial