X-Git-Url: http://git.onelab.eu/?p=sface.git;a=blobdiff_plain;f=sface%2Fxmlrpcwindow.py;fp=sface%2Fxmlrpcwindow.py;h=483d443fdfee62867b7e6ab16fde4a923d5070d0;hp=0000000000000000000000000000000000000000;hb=349fb978a1b7a88e741beef6aea4ac3d98a56efd;hpb=8f437c02a1aedd746d4a7b4c51042483e2939d50 diff --git a/sface/xmlrpcwindow.py b/sface/xmlrpcwindow.py new file mode 100644 index 0000000..483d443 --- /dev/null +++ b/sface/xmlrpcwindow.py @@ -0,0 +1,56 @@ +import re +from PyQt4.QtXml import QDomDocument +from sface.xmlwidget import XmlWindow, DomModel + +class XmlrpcTracker(): + def __init__(self): + self.xmlrpcWindow = XmlrpcWindow() + + def getAndPrint(self, rawOutput): + self.store(rawOutput) + self.extractXml() + self.xmlrpcWindow.setData(self.xml) + self.showXmlrpc() + + def showXmlrpc(self): + self.xmlrpcWindow.show() + self.xmlrpcWindow.resize(500, 640) + self.xmlrpcWindow.raise_() + self.xmlrpcWindow.activateWindow() + + def store(self, rawOutput): + self.rawOutput = rawOutput + + def extractXml(self): + pttrnAsk = '.*?' + pttrnAns = '.*?' + answers = re.compile(pttrnAsk, re.DOTALL).findall(self.rawOutput) + replies = re.compile(pttrnAns, re.DOTALL).findall(self.rawOutput) + # cleaning + answers = map(lambda x: x.replace('\\n','\n'), answers) + replies = map(lambda x: x.replace('\\n','\n').replace("'\nbody: '", ''), replies) + replies.reverse() # so that I use pop() as popleft + # A well-formed XML document must have one, and only one, top-level element + self.xml = '' + for ans in answers: + self.xml += ans + replies.pop() + self.xml += '' + + def stats(self): + # statistics: round-trip time, size of the com + pass + +class XmlrpcWindow(XmlWindow): + def __init__(self, parent=None): + # super __init__() calls updateView, + # which assumes you have some data + self.data = '' + XmlWindow.__init__(self, parent, 'XMLRPC window') + + def setData(self, XmlrpcCom): + self.data = XmlrpcCom + + def updateView(self): + XmlWindow.updateView(self) + + self.document.setContent(self.data)