E5Network/E5NetworkMonitor.py

branch
Py2 comp.
changeset 3057
10516539f238
parent 2525
8b507a9a2d40
parent 2990
583beaf0b4b8
child 3145
a9de05d4a22f
equal deleted inserted replaced
3056:9986ec0e559a 3057:10516539f238
46 """ 46 """
47 Class method to get a reference to our singleton. 47 Class method to get a reference to our singleton.
48 48
49 @param networkAccessManager reference to the network access manager 49 @param networkAccessManager reference to the network access manager
50 (QNetworkAccessManager) 50 (QNetworkAccessManager)
51 @return reference to the network monitor singleton (E5NetworkMonitor)
51 """ 52 """
52 if cls._monitor is None: 53 if cls._monitor is None:
53 cls._monitor = E5NetworkMonitor(networkAccessManager) 54 cls._monitor = E5NetworkMonitor(networkAccessManager)
54 cls._monitor.setAttribute(Qt.WA_DeleteOnClose, True) 55 cls._monitor.setAttribute(Qt.WA_DeleteOnClose, True)
55 56
84 self.__replyHeaders = QStandardItemModel(self) 85 self.__replyHeaders = QStandardItemModel(self)
85 self.__replyHeaders.setHorizontalHeaderLabels( 86 self.__replyHeaders.setHorizontalHeaderLabels(
86 [self.trUtf8("Name"), self.trUtf8("Value")]) 87 [self.trUtf8("Name"), self.trUtf8("Value")])
87 self.responseHeadersList.setModel(self.__replyHeaders) 88 self.responseHeadersList.setModel(self.__replyHeaders)
88 self.responseHeadersList.horizontalHeader().setStretchLastSection(True) 89 self.responseHeadersList.horizontalHeader().setStretchLastSection(True)
89 self.responseHeadersList.doubleClicked.connect(self.__showHeaderDetails) 90 self.responseHeadersList.doubleClicked.connect(
91 self.__showHeaderDetails)
90 92
91 self.requestsList.horizontalHeader().setStretchLastSection(True) 93 self.requestsList.horizontalHeader().setStretchLastSection(True)
92 self.requestsList.verticalHeader().setMinimumSectionSize(-1) 94 self.requestsList.verticalHeader().setMinimumSectionSize(-1)
93 95
94 self.__proxyModel = QSortFilterProxyModel(self) 96 self.__proxyModel = QSortFilterProxyModel(self)
95 self.__proxyModel.setFilterKeyColumn(-1) 97 self.__proxyModel.setFilterKeyColumn(-1)
96 self.searchEdit.textChanged.connect(self.__proxyModel.setFilterFixedString) 98 self.searchEdit.textChanged.connect(
99 self.__proxyModel.setFilterFixedString)
97 100
98 self.removeButton.clicked[()].connect(self.requestsList.removeSelected) 101 self.removeButton.clicked[()].connect(self.requestsList.removeSelected)
99 self.removeAllButton.clicked[()].connect(self.requestsList.removeAll) 102 self.removeAllButton.clicked[()].connect(self.requestsList.removeAll)
100 103
101 self.__model = E5RequestModel(networkAccessManager, self) 104 self.__model = E5RequestModel(networkAccessManager, self)
102 self.__proxyModel.setSourceModel(self.__model) 105 self.__proxyModel.setSourceModel(self.__model)
103 self.requestsList.setModel(self.__proxyModel) 106 self.requestsList.setModel(self.__proxyModel)
104 self.__proxyModel.rowsInserted.connect(self.requestsList.scrollToBottom) 107 self.__proxyModel.rowsInserted.connect(
105 self.requestsList.selectionModel().currentChanged[QModelIndex, QModelIndex]\ 108 self.requestsList.scrollToBottom)
109 self.requestsList.selectionModel()\
110 .currentChanged[QModelIndex, QModelIndex]\
106 .connect(self.__currentChanged) 111 .connect(self.__currentChanged)
107 112
108 fm = self.fontMetrics() 113 fm = self.fontMetrics()
109 em = fm.width("m") 114 em = fm.width("m")
110 self.requestsList.horizontalHeader().resizeSection(0, em * 5) 115 self.requestsList.horizontalHeader().resizeSection(0, em * 5)
188 193
189 row = index.row() 194 row = index.row()
190 name = headerList.model().data(headerList.model().index(row, 0)) 195 name = headerList.model().data(headerList.model().index(row, 0))
191 value = headerList.model().data(headerList.model().index(row, 1)) 196 value = headerList.model().data(headerList.model().index(row, 1))
192 if self.__headersDlg is None: 197 if self.__headersDlg is None:
193 from .E5NetworkHeaderDetailsDialog import E5NetworkHeaderDetailsDialog 198 from .E5NetworkHeaderDetailsDialog import \
199 E5NetworkHeaderDetailsDialog
194 self.__headersDlg = E5NetworkHeaderDetailsDialog(self) 200 self.__headersDlg = E5NetworkHeaderDetailsDialog(self)
195 self.__headersDlg.setData(name, value) 201 self.__headersDlg.setData(name, value)
196 self.__headersDlg.show() 202 self.__headersDlg.show()
197 203
198 204
247 """ 253 """
248 Private method to add a request object to the model. 254 Private method to add a request object to the model.
249 255
250 @param req reference to the request object (E5NetworkRequest) 256 @param req reference to the request object (E5NetworkRequest)
251 """ 257 """
252 self.beginInsertRows(QModelIndex(), len(self.requests), len(self.requests)) 258 self.beginInsertRows(
259 QModelIndex(), len(self.requests), len(self.requests))
253 self.requests.append(req) 260 self.requests.append(req)
254 req.reply.finished[()].connect(self.__addReply) 261 req.reply.finished[()].connect(self.__addReply)
255 self.endInsertRows() 262 self.endInsertRows()
256 263
257 def __addReply(self): 264 def __addReply(self):
275 self.requests[offset].replyHeaders.append(( 282 self.requests[offset].replyHeaders.append((
276 str(header, "utf-8"), str(reply.rawHeader(header), "utf-8"))) 283 str(header, "utf-8"), str(reply.rawHeader(header), "utf-8")))
277 284
278 # save reply info to be displayed 285 # save reply info to be displayed
279 status = reply.attribute(QNetworkRequest.HttpStatusCodeAttribute) or 0 286 status = reply.attribute(QNetworkRequest.HttpStatusCodeAttribute) or 0
280 reason = reply.attribute(QNetworkRequest.HttpReasonPhraseAttribute) or "" 287 reason = \
288 reply.attribute(QNetworkRequest.HttpReasonPhraseAttribute) or ""
281 self.requests[offset].response = "{0:d} {1}".format(status, reason) 289 self.requests[offset].response = "{0:d} {1}".format(status, reason)
282 self.requests[offset].length = reply.header(QNetworkRequest.ContentLengthHeader) 290 self.requests[offset].length = \
283 self.requests[offset].contentType = reply.header(QNetworkRequest.ContentTypeHeader) 291 reply.header(QNetworkRequest.ContentLengthHeader)
292 self.requests[offset].contentType = \
293 reply.header(QNetworkRequest.ContentTypeHeader)
284 294
285 if status == 302: 295 if status == 302:
286 target = reply.attribute(QNetworkRequest.RedirectionTargetAttribute) or QUrl() 296 target = reply.attribute(
297 QNetworkRequest.RedirectionTargetAttribute) or QUrl()
287 self.requests[offset].info = \ 298 self.requests[offset].info = \
288 self.trUtf8("Redirect: {0}").format(target.toString()) 299 self.trUtf8("Redirect: {0}").format(target.toString())
289 300
290 def headerData(self, section, orientation, role=Qt.DisplayRole): 301 def headerData(self, section, orientation, role=Qt.DisplayRole):
291 """ 302 """

eric ide

mercurial