15 |
15 |
16 class WebBrowserJavaScriptConsole(QTextEdit): |
16 class WebBrowserJavaScriptConsole(QTextEdit): |
17 """ |
17 """ |
18 Class implementing a JavaScript console widget. |
18 Class implementing a JavaScript console widget. |
19 """ |
19 """ |
|
20 |
20 def __init__(self, parent=None): |
21 def __init__(self, parent=None): |
21 """ |
22 """ |
22 Constructor |
23 Constructor |
23 |
24 |
24 @param parent reference to the parent widget (QWidget) |
25 @param parent reference to the parent widget (QWidget) |
25 """ |
26 """ |
26 super().__init__(parent) |
27 super().__init__(parent) |
27 self.setAcceptRichText(False) |
28 self.setAcceptRichText(False) |
28 self.setLineWrapMode(QTextEdit.LineWrapMode.NoWrap) |
29 self.setLineWrapMode(QTextEdit.LineWrapMode.NoWrap) |
29 self.setReadOnly(True) |
30 self.setReadOnly(True) |
30 |
31 |
31 # create the context menu |
32 # create the context menu |
32 self.__menu = QMenu(self) |
33 self.__menu = QMenu(self) |
33 self.__menu.addAction(self.tr('Clear'), self.clear) |
34 self.__menu.addAction(self.tr("Clear"), self.clear) |
34 self.__menu.addAction(self.tr('Copy'), self.copy) |
35 self.__menu.addAction(self.tr("Copy"), self.copy) |
35 self.__menu.addSeparator() |
36 self.__menu.addSeparator() |
36 self.__menu.addAction(self.tr('Select All'), self.selectAll) |
37 self.__menu.addAction(self.tr("Select All"), self.selectAll) |
37 |
38 |
38 self.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu) |
39 self.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu) |
39 self.customContextMenuRequested.connect(self.__handleShowContextMenu) |
40 self.customContextMenuRequested.connect(self.__handleShowContextMenu) |
40 |
41 |
41 self.__levelStrings = { |
42 self.__levelStrings = { |
42 QWebEnginePage.JavaScriptConsoleMessageLevel.InfoMessageLevel: |
43 QWebEnginePage.JavaScriptConsoleMessageLevel.InfoMessageLevel: self.tr( |
43 self.tr("Info"), |
44 "Info" |
44 QWebEnginePage.JavaScriptConsoleMessageLevel.WarningMessageLevel: |
45 ), |
45 self.tr("Warning"), |
46 QWebEnginePage.JavaScriptConsoleMessageLevel.WarningMessageLevel: self.tr( |
46 QWebEnginePage.JavaScriptConsoleMessageLevel.ErrorMessageLevel: |
47 "Warning" |
47 self.tr("Error"), |
48 ), |
|
49 QWebEnginePage.JavaScriptConsoleMessageLevel.ErrorMessageLevel: self.tr( |
|
50 "Error" |
|
51 ), |
48 } |
52 } |
49 |
53 |
50 def __handleShowContextMenu(self, coord): |
54 def __handleShowContextMenu(self, coord): |
51 """ |
55 """ |
52 Private slot to show the context menu. |
56 Private slot to show the context menu. |
53 |
57 |
54 @param coord the position of the mouse pointer (QPoint) |
58 @param coord the position of the mouse pointer (QPoint) |
55 """ |
59 """ |
56 coord = self.mapToGlobal(coord) |
60 coord = self.mapToGlobal(coord) |
57 self.__menu.popup(coord) |
61 self.__menu.popup(coord) |
58 |
62 |
59 def __appendText(self, txt): |
63 def __appendText(self, txt): |
60 """ |
64 """ |
61 Private method to append text to the end. |
65 Private method to append text to the end. |
62 |
66 |
63 @param txt text to insert (string) |
67 @param txt text to insert (string) |
64 """ |
68 """ |
65 tc = self.textCursor() |
69 tc = self.textCursor() |
66 tc.movePosition(QTextCursor.MoveOperation.End) |
70 tc.movePosition(QTextCursor.MoveOperation.End) |
67 self.setTextCursor(tc) |
71 self.setTextCursor(tc) |
68 self.insertPlainText(txt) |
72 self.insertPlainText(txt) |
69 self.ensureCursorVisible() |
73 self.ensureCursorVisible() |
70 |
74 |
71 def keyPressEvent(self, evt): |
75 def keyPressEvent(self, evt): |
72 """ |
76 """ |
73 Protected method handling key press events. |
77 Protected method handling key press events. |
74 |
78 |
75 @param evt key press event (QKeyEvent) |
79 @param evt key press event (QKeyEvent) |
76 """ |
80 """ |
77 if evt.modifiers() == Qt.KeyboardModifier.ControlModifier: |
81 if evt.modifiers() == Qt.KeyboardModifier.ControlModifier: |
78 if evt.key() == Qt.Key.Key_C: |
82 if evt.key() == Qt.Key.Key_C: |
79 self.copy() |
83 self.copy() |
81 return |
85 return |
82 elif evt.key() == Qt.Key.Key_A: |
86 elif evt.key() == Qt.Key.Key_A: |
83 self.selectAll() |
87 self.selectAll() |
84 evt.accept() |
88 evt.accept() |
85 return |
89 return |
86 |
90 |
87 def javaScriptConsoleMessage(self, level, message, lineNumber, sourceId): |
91 def javaScriptConsoleMessage(self, level, message, lineNumber, sourceId): |
88 """ |
92 """ |
89 Public method to show a console message. |
93 Public method to show a console message. |
90 |
94 |
91 @param level severity |
95 @param level severity |
92 @type QWebEnginePage.JavaScriptConsoleMessageLevel |
96 @type QWebEnginePage.JavaScriptConsoleMessageLevel |
93 @param message message to be shown |
97 @param message message to be shown |
94 @type str |
98 @type str |
95 @param lineNumber line number of an error |
99 @param lineNumber line number of an error |
96 @type int |
100 @type int |
97 @param sourceId source URL causing the error |
101 @param sourceId source URL causing the error |
98 @type str |
102 @type str |
99 """ |
103 """ |
100 txt = self.tr("[{0}] {1}").format( |
104 txt = self.tr("[{0}] {1}").format(self.__levelStrings[level], message) |
101 self.__levelStrings[level], message) |
|
102 self.__appendText(txt) |
105 self.__appendText(txt) |
103 |
106 |
104 if lineNumber: |
107 if lineNumber: |
105 self.__appendText(self.tr(" at line {0}\n").format(lineNumber)) |
108 self.__appendText(self.tr(" at line {0}\n").format(lineNumber)) |
106 else: |
109 else: |
107 self.__appendText("\n") |
110 self.__appendText("\n") |
108 |
111 |
109 if sourceId: |
112 if sourceId: |
110 self.__appendText(self.tr("URL: {0}\n").format(sourceId)) |
113 self.__appendText(self.tr("URL: {0}\n").format(sourceId)) |