add export button
authorsmbaker <smbaker@fc8clean.lan>
Tue, 18 Oct 2011 23:27:04 +0000 (16:27 -0700)
committersmbaker <smbaker@fc8clean.lan>
Tue, 18 Oct 2011 23:27:04 +0000 (16:27 -0700)
sface/xmlrpcwindow.py

index ae8b6d1..1e24dbf 100644 (file)
@@ -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)
@@ -228,19 +235,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 = "<debug>" + call.get("request","") + call.get("reply", "") + "</debug>"
         #xml = call.get("request","") + call.get("reply", "")
 
@@ -248,6 +263,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)