src/eric7/WebBrowser/WebInspector.py

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

eric ide

mercurial