eric7/WebBrowser/WebInspector.py

branch
eric7
changeset 8312
800c432b34c8
parent 8218
7c09585bd960
child 8318
962bce857696
equal deleted inserted replaced
8311:4e8b98454baa 8312:800c432b34c8
1 # -*- coding: utf-8 -*-
2
3 # Copyright (c) 2015 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
4 #
5
6 """
7 Module implementing a QWebEngineView to load the web inspector in.
8 """
9
10 from PyQt5.QtCore import pyqtSignal, QSize
11 from PyQt5.QtWebEngineWidgets import (
12 QWebEngineView, QWebEnginePage, QWebEngineSettings
13 )
14
15 import Preferences
16
17 _VIEWS = []
18
19
20 class WebInspector(QWebEngineView):
21 """
22 Class implementing a QWebEngineView to load the web inspector in.
23
24 @signal inspectorClosed emitted to indicate the closing of the inspector
25 window
26 """
27 inspectorClosed = pyqtSignal()
28
29 def __init__(self, parent=None):
30 """
31 Constructor
32
33 @param parent reference to the parent widget
34 @type QWidget
35 """
36 super().__init__(parent)
37
38 self.__view = None
39 self.__inspectElement = False
40
41 self.__reloadGeometry()
42
43 registerView(self)
44
45 self.page().windowCloseRequested.connect(self.close)
46 self.page().loadFinished.connect(self.__loadFinished)
47
48 def closeEvent(self, evt):
49 """
50 Protected method to save the geometry when closed.
51
52 @param evt event object
53 @type QCloseEvent
54 """
55 Preferences.setGeometry("WebInspectorGeometry", self.saveGeometry())
56 super().closeEvent(evt)
57
58 if evt.isAccepted():
59 self.inspectorClosed.emit()
60
61 def __reloadGeometry(self):
62 """
63 Private method to restore the geometry.
64 """
65 geom = Preferences.getGeometry("WebInspectorGeometry")
66 if geom.isEmpty():
67 s = QSize(600, 600)
68 self.resize(s)
69 else:
70 self.restoreGeometry(geom)
71
72 def setView(self, view, inspectElement=False):
73 """
74 Public method to connect a view to this inspector.
75
76 @param view reference to the view object
77 @type WebBrowserView
78 @param inspectElement flag indicating to start a web inspection
79 @type bool
80 """
81 self.__view = view
82 if not self.isEnabled():
83 return
84
85 self.__inspectElement = inspectElement
86
87 self.page().setInspectedPage(self.__view.page())
88
89 def inspectElement(self):
90 """
91 Public method to inspect an element.
92 """
93 self.__inspectElement = True
94
95 @classmethod
96 def isEnabled(cls):
97 """
98 Class method to check, if the web inspector is enabled.
99
100 @return flag indicating the enabled state
101 @rtype bool
102 """
103 from WebBrowser.WebBrowserWindow import WebBrowserWindow
104 if not WebBrowserWindow.webSettings().testAttribute(
105 QWebEngineSettings.WebAttribute.JavascriptEnabled):
106 return False
107
108 return True
109
110 def __loadFinished(self):
111 """
112 Private slot handling the finished signal.
113 """
114 if self.__inspectElement:
115 self.__view.triggerPageAction(
116 QWebEnginePage.WebAction.InspectElement)
117 self.__inspectElement = False
118
119
120 def registerView(view):
121 """
122 Function to register a view.
123
124 @param view reference to the view
125 @type WebBrowserView
126 """
127 if _VIEWS is None:
128 return
129
130 _VIEWS.insert(0, view)
131
132
133 def unregisterView(view):
134 """
135 Function to unregister a view.
136
137 @param view reference to the view
138 @type WebBrowserView
139 """
140 if _VIEWS is None:
141 return
142
143 if view in _VIEWS:
144 _VIEWS.remove(view)
145
146
147 def pushView(view):
148 """
149 Function to push a view to the front of the list.
150
151 @param view reference to the view
152 @type WebBrowserView
153 """
154 if _VIEWS is None:
155 return
156
157 if view in _VIEWS:
158 _VIEWS.remove(view)
159 _VIEWS.insert(0, view)

eric ide

mercurial