X-Git-Url: http://git.onelab.eu/?p=sface.git;a=blobdiff_plain;f=sface%2Fxmlrpcwindow.py;h=91f0c011f25eab377c1ee2df4de8463e1246aa64;hp=ae8b6d15707bae1d5b4a0ea5cec63c8f0e596782;hb=ebc6f2825a983bf1cef33831349643577a32336c;hpb=18d18184d52738060acf301261c9d7412936ffc2 diff --git a/sface/xmlrpcwindow.py b/sface/xmlrpcwindow.py index ae8b6d1..91f0c01 100644 --- a/sface/xmlrpcwindow.py +++ b/sface/xmlrpcwindow.py @@ -158,6 +158,11 @@ class XmlrpcTracker(QWidget): self.delegate.insertNodeDelegate('comment', CommentNodeDelegate()) self.xmlView.setItemDelegate(self.delegate) + exportButton = QPushButton("&Export Call") + layoutButtons = QHBoxLayout() + layoutButtons.addWidget(exportButton) + layoutButtons.addStretch() + self.layout = QVBoxLayout() self.layout.addWidget(labelCalls) self.layout.addWidget(self.callTable) @@ -165,10 +170,12 @@ class XmlrpcTracker(QWidget): self.layout.addWidget(self.argsTable) self.layout.addWidget(labelXml) self.layout.addWidget(self.xmlView) + self.layout.addLayout(layoutButtons) self.setLayout(self.layout) self.connect(self.callTable, SIGNAL("itemSelectionChanged ()"), self.onCallSelect) + self.connect(exportButton, SIGNAL("clicked()"), self.onExportClicked) def getAndPrint(self, rawOutput): self.reader.store(rawOutput) @@ -179,6 +186,7 @@ class XmlrpcTracker(QWidget): self.callTable.clear() self.callTable.setColumnCount(3) self.callTable.setHorizontalHeaderLabels(["name", "status", "faultString"]) + self.callTable.setHorizontalScrollMode(QAbstractItemView.ScrollPerPixel) calls = self.reader.calls self.callTable.setRowCount(len(calls)) @@ -228,19 +236,27 @@ class XmlrpcTracker(QWidget): self.argsTable.resizeColumnsToContents() - def onCallSelect(self): + def getSelectedCall(self): selItems = self.callTable.selectedItems() if (len(selItems) <= 0): - return + return None row = selItems[0].data(Qt.UserRole).toInt()[0] calls = self.reader.calls if len(calls)<=row: - return + return None call = calls[row] + return call + + def onCallSelect(self): + call = self.getSelectedCall() + + if not call: + return + xml = "" + call.get("request","") + call.get("reply", "") + "" #xml = call.get("request","") + call.get("reply", "") @@ -248,6 +264,20 @@ class XmlrpcTracker(QWidget): self.updateArgsTable(call.get("args",[])) + def onExportClicked(self): + call = self.getSelectedCall() + + if not call: + return + + filename = QFileDialog.getSaveFileName(self, 'Save File', '.') + + f = open(filename, "w") + f.write(call.get("request","") + "\n") + f.write(call.get("reply","") + "\n") + f.close() + + def displayXml(self, xml): self.document = QDomDocument("XMLRPC Tracker") self.document.setContent(xml)