50 (QNetworkAccessManager) |
50 (QNetworkAccessManager) |
51 @return reference to the network monitor singleton (E5NetworkMonitor) |
51 @return reference to the network monitor singleton (E5NetworkMonitor) |
52 """ |
52 """ |
53 if cls._monitor is None: |
53 if cls._monitor is None: |
54 cls._monitor = E5NetworkMonitor(networkAccessManager) |
54 cls._monitor = E5NetworkMonitor(networkAccessManager) |
55 cls._monitor.setAttribute(Qt.WA_DeleteOnClose, True) |
|
56 |
55 |
57 return cls._monitor |
56 return cls._monitor |
58 |
57 |
59 @classmethod |
58 @classmethod |
60 def closeMonitor(cls): |
59 def closeMonitor(cls): |
75 super(E5NetworkMonitor, self).__init__(parent) |
74 super(E5NetworkMonitor, self).__init__(parent) |
76 self.setupUi(self) |
75 self.setupUi(self) |
77 |
76 |
78 self.__requestHeaders = QStandardItemModel(self) |
77 self.__requestHeaders = QStandardItemModel(self) |
79 self.__requestHeaders.setHorizontalHeaderLabels( |
78 self.__requestHeaders.setHorizontalHeaderLabels( |
80 [self.trUtf8("Name"), self.trUtf8("Value")]) |
79 [self.tr("Name"), self.tr("Value")]) |
81 self.requestHeadersList.setModel(self.__requestHeaders) |
80 self.requestHeadersList.setModel(self.__requestHeaders) |
82 self.requestHeadersList.horizontalHeader().setStretchLastSection(True) |
81 self.requestHeadersList.horizontalHeader().setStretchLastSection(True) |
83 self.requestHeadersList.doubleClicked.connect(self.__showHeaderDetails) |
82 self.requestHeadersList.doubleClicked.connect(self.__showHeaderDetails) |
84 |
83 |
85 self.__replyHeaders = QStandardItemModel(self) |
84 self.__replyHeaders = QStandardItemModel(self) |
86 self.__replyHeaders.setHorizontalHeaderLabels( |
85 self.__replyHeaders.setHorizontalHeaderLabels( |
87 [self.trUtf8("Name"), self.trUtf8("Value")]) |
86 [self.tr("Name"), self.tr("Value")]) |
88 self.responseHeadersList.setModel(self.__replyHeaders) |
87 self.responseHeadersList.setModel(self.__replyHeaders) |
89 self.responseHeadersList.horizontalHeader().setStretchLastSection(True) |
88 self.responseHeadersList.horizontalHeader().setStretchLastSection(True) |
90 self.responseHeadersList.doubleClicked.connect( |
89 self.responseHeadersList.doubleClicked.connect( |
91 self.__showHeaderDetails) |
90 self.__showHeaderDetails) |
92 |
91 |
96 self.__proxyModel = QSortFilterProxyModel(self) |
95 self.__proxyModel = QSortFilterProxyModel(self) |
97 self.__proxyModel.setFilterKeyColumn(-1) |
96 self.__proxyModel.setFilterKeyColumn(-1) |
98 self.searchEdit.textChanged.connect( |
97 self.searchEdit.textChanged.connect( |
99 self.__proxyModel.setFilterFixedString) |
98 self.__proxyModel.setFilterFixedString) |
100 |
99 |
101 self.removeButton.clicked[()].connect(self.requestsList.removeSelected) |
100 self.removeButton.clicked.connect(self.requestsList.removeSelected) |
102 self.removeAllButton.clicked[()].connect(self.requestsList.removeAll) |
101 self.removeAllButton.clicked.connect(self.requestsList.removeAll) |
103 |
102 |
104 self.__model = E5RequestModel(networkAccessManager, self) |
103 self.__model = E5RequestModel(networkAccessManager, self) |
105 self.__proxyModel.setSourceModel(self.__model) |
104 self.__proxyModel.setSourceModel(self.__model) |
106 self.requestsList.setModel(self.__proxyModel) |
105 self.requestsList.setModel(self.__proxyModel) |
107 self.__proxyModel.rowsInserted.connect( |
106 self.__proxyModel.rowsInserted.connect( |
215 @param parent reference to the parent object (QObject) |
214 @param parent reference to the parent object (QObject) |
216 """ |
215 """ |
217 super(E5RequestModel, self).__init__(parent) |
216 super(E5RequestModel, self).__init__(parent) |
218 |
217 |
219 self.__headerData = [ |
218 self.__headerData = [ |
220 self.trUtf8("Method"), |
219 self.tr("Method"), |
221 self.trUtf8("Address"), |
220 self.tr("Address"), |
222 self.trUtf8("Response"), |
221 self.tr("Response"), |
223 self.trUtf8("Length"), |
222 self.tr("Length"), |
224 self.trUtf8("Content Type"), |
223 self.tr("Content Type"), |
225 self.trUtf8("Info"), |
224 self.tr("Info"), |
226 ] |
225 ] |
227 |
226 |
228 self.__operations = { |
227 self.__operations = { |
229 QNetworkAccessManager.HeadOperation: "HEAD", |
228 QNetworkAccessManager.HeadOperation: "HEAD", |
230 QNetworkAccessManager.GetOperation: "GET", |
229 QNetworkAccessManager.GetOperation: "GET", |
256 @param req reference to the request object (E5NetworkRequest) |
255 @param req reference to the request object (E5NetworkRequest) |
257 """ |
256 """ |
258 self.beginInsertRows( |
257 self.beginInsertRows( |
259 QModelIndex(), len(self.requests), len(self.requests)) |
258 QModelIndex(), len(self.requests), len(self.requests)) |
260 self.requests.append(req) |
259 self.requests.append(req) |
261 req.reply.finished[()].connect(self.__addReply) |
260 req.reply.finished.connect(self.__addReply) |
262 self.endInsertRows() |
261 self.endInsertRows() |
263 |
262 |
264 def __addReply(self): |
263 def __addReply(self): |
265 """ |
264 """ |
266 Private slot to add the reply data to the model. |
265 Private slot to add the reply data to the model. |
294 |
293 |
295 if status == 302: |
294 if status == 302: |
296 target = reply.attribute( |
295 target = reply.attribute( |
297 QNetworkRequest.RedirectionTargetAttribute) or QUrl() |
296 QNetworkRequest.RedirectionTargetAttribute) or QUrl() |
298 self.requests[offset].info = \ |
297 self.requests[offset].info = \ |
299 self.trUtf8("Redirect: {0}").format(target.toString()) |
298 self.tr("Redirect: {0}").format(target.toString()) |
300 |
299 |
301 def headerData(self, section, orientation, role=Qt.DisplayRole): |
300 def headerData(self, section, orientation, role=Qt.DisplayRole): |
302 """ |
301 """ |
303 Public method to get header data from the model. |
302 Public method to get header data from the model. |
304 |
303 |