示例#1
0
文件: index.py 项目: cefn/xmlorgmode
class QueryDisplay(QObject):

    def __init__(self, datapath, querypath):
        super(QueryDisplay,self).__init__()
        self.datapath = datapath
        self.querypath = querypath
        self.view = QWebView()
        self.queryimpl = QXmlQuery(QXmlQuery.XQuery10)
    
    @pyqtSlot()
    def update(self, watchdog_event=None):
        self.queryimpl.setFocus(QUrl.fromLocalFile(self.datapath))
        self.queryimpl.setQuery(QUrl.fromLocalFile(self.querypath))
        self.view.setHtml(self.queryimpl.evaluateToString())
 def errorHandler(self, resultXML):
      if resultXML:
        qDebug(resultXML)
        query = QXmlQuery(QXmlQuery.XSLT20)
        xslFile = QFile(":/plugins/wps/exception.xsl")
        xslFile.open(QIODevice.ReadOnly)
        bRead = query.setFocus(resultXML)
        query.setQuery(xslFile)
        exceptionHtml = query.evaluateToString()
        if exceptionHtml is None:
            qDebug("Empty result from exception.xsl")
            exceptionHtml = resultXML
        self._errorResultCallback(exceptionHtml)
        xslFile.close()
      return False
示例#3
0
 def search(self):
     '''
     Search for elements in dom corresponding to primitive searched by user 
     '''
     if not hasattr(self,"primitive"):
         QtGui.QMessageBox.warning(self, "Nothing to search for", "Select a primitive first before pressing ok.")
         return
     predicateList = ""
     for attribute in self.primitive.nextAttribute():
         if attribute.getValue():
             #Add Predicate
             predicateList = predicateList+("[@"+attribute.name+"='"+str(attribute.value)+"']")
     
     #buildx path of the query
     xpath = "//"+self.primitive.name+predicateList
     
     #Once predicate is built
     #Make XQuery
     dependencyQuery = QXmlQuery()
     parsedXML = QtCore.QString()
     newTextStream = QtCore.QTextStream(parsedXML)
     #Parent is top object, asks for its node
     self.parent.domDocs["main"].save(newTextStream,2)
     #Proceded XQuery
     queryBuffer = QtCore.QBuffer()
     queryBuffer.setData(parsedXML.toUtf8())
     queryBuffer.open(QtCore.QIODevice.ReadOnly)
     dependencyQuery.bindVariable("varSerializedXML", queryBuffer)
     query= "for $x in doc($varSerializedXML)"+xpath+"/ancestor::Process[@label]/@label return string(data($x))"
     dependencyQuery.setQuery(query)
     dependencies = QtCore.QStringList()
     dependencyQuery.evaluateTo(dependencies)
     if not len(list(dependencies)):
         QtGui.QMessageBox.warning(self, "Primitive not found", "Couldn't find a match for selected criterion")
         return
     treatmentModel = BaseTreatmentsModel()
     processList = list(set(dependencies))
     for process in processList:
         process = str(process)
         if not processList.index(process):
             #First Process gotta create tree editor
             tree = treatmentModel.getTreatmentsDict()[process]
             editor = MainEditorWindow(tree.toElement().elementsByTagName("PrimitiveTree").item(0).firstChild(),self.parent,process)
             editor.setWindowModality(QtCore.Qt.WindowModal)
             editor.tabWidget_2.currentWidget().primitive.propagateHighlighting(self.primitive)
             continue
         tree = treatmentModel.getTreatmentsDict()[process]
         newTreeView = MedTreeView(tree.toElement().elementsByTagName("PrimitiveTree").item(0).firstChild(),editor)
         editor.tabWidget_2.addTab(newTreeView,process)
         newTreeView.primitive.propagateHighlighting(self.primitive)
     
     editor.exec_()
示例#4
0
    def getHtml(self, md):
        xsltFile = QFile(self.xsltFilePath)
        xsltFile.open(QIODevice.ReadOnly)
        xslt = unicode(xsltFile.readAll())
        xsltFile.close()

        qry = QXmlQuery(QXmlQuery.XSLT20)
        '''self.handler = ErrorHandler()
        qry.setMessageHandler(self.handler)'''

        qry.setFocus(md)
        qry.setQuery(xslt)

        return qry.evaluateToString()
示例#5
0
    def compute(self):
        """ compute() -> None
        Render the XML tree and display it on the spreadsheet
        """
        xml = self.get_input('XML').name
        xsl = self.get_input('XSL').name

        query = QXmlQuery(QXmlQuery.XSLT20)
        query.setFocus(QUrl.fromLocalFile(os.path.join(os.getcwd(), xml)))
        query.setQuery(QUrl.fromLocalFile(os.path.join(os.getcwd(), xsl)))
        html = query.evaluateToString()  # gets a unicode object
        if html is None:
            raise ModuleError(self, "Error applying XSL")

        self.displayAndWait(RichTextCellWidget, (html, ))
示例#6
0
 def save(self, serialized, filepath=None):
     if filepath == None:
         if self.loadedpath == None:
           raise Error("Cannot guess filepath, no onload event was triggered")
         else:
           filepath = self.loadedpath
     f = open(filepath, 'w')
     savefilter = QXmlQuery(QXmlQuery.XQuery10)
     savefilter.setFocus(serialized)
     savefilter.setQuery(QUrl(os.path.realpath(self.savefilterpath)))
     result = savefilter.evaluateToString()
     result = result.toUtf8()
     f.write(result)
     f.close()
     return filepath
示例#7
0
    def compute(self):
        """ compute() -> None
        Render the XML tree and display it on the spreadsheet
        """
        xml = self.getInputFromPort('XML').name
        xsl = self.getInputFromPort('XSL').name

        query = QXmlQuery(QXmlQuery.XSLT20)
        query.setFocus(QUrl.fromLocalFile(os.path.join(os.getcwd(), xml)))
        query.setQuery(QUrl.fromLocalFile(os.path.join(os.getcwd(), xsl)))
        html = query.evaluateToString()

        self.cellWidget = self.displayAndWait(RichTextCellWidget, (html,))
 def errorHandler(self, resultXML):
     if resultXML:
         qDebug(resultXML)
         query = QXmlQuery(QXmlQuery.XSLT20)
         xslFile = QFile(":/plugins/wps/exception.xsl")
         xslFile.open(QIODevice.ReadOnly)
         bRead = query.setFocus(resultXML)
         query.setQuery(xslFile)
         exceptionHtml = query.evaluateToString()
         if exceptionHtml is None:
             qDebug("Empty result from exception.xsl")
             exceptionHtml = resultXML
         self._errorResultCallback(exceptionHtml)
         xslFile.close()
     return False
示例#9
0
    def compute(self):
        """ compute() -> None
        Render the XML tree and display it on the spreadsheet
        """
        xml = self.get_input('XML').name
        xsl = self.get_input('XSL').name

        query = QXmlQuery(QXmlQuery.XSLT20)
        query.setFocus(QUrl.fromLocalFile(os.path.join(os.getcwd(), xml)))
        query.setQuery(QUrl.fromLocalFile(os.path.join(os.getcwd(), xsl)))
        html = query.evaluateToString() # gets a unicode object
        if html is None:
            raise ModuleError(self, "Error applying XSL")

        self.displayAndWait(RichTextCellWidget, (html,))
示例#10
0
    def getHtml(self, md):
        xsltFile = QFile(self.xsltFilePath)
        xsltFile.open(QIODevice.ReadOnly)
        xslt = unicode(xsltFile.readAll())
        xsltFile.close()

        qry = QXmlQuery(QXmlQuery.XSLT20)

        '''self.handler = ErrorHandler()
        qry.setMessageHandler(self.handler)'''

        qry.setFocus(md)
        qry.setQuery(xslt)

        return qry.evaluateToString()
示例#11
0
    def xmlbuffer(self):
        queryimpl = QXmlQuery(QXmlQuery.XQuery10)
        #merge params from xquerynames and query path arguments
        params = copy.deepcopy(self.xquerynames)
        for name,value in self._queryparams.iteritems():
          params.append([name,value])
        #push values into external variable names in xquery
        for item in params:
            if len(item)==3 : # item has namespace
                (name,value,namespace) = item
                qname = QXmlName(queryimpl.namePool(), name, namespace)
            else:
                (name,value) = item
                qname = QXmlName(queryimpl.namePool(), name)
            qvalue = QXmlItem(value)
            queryimpl.bindVariable(qname,qvalue)
        #bind focus if available
        if(self.focuspath != None):
            queryimpl.setFocus(QUrl.fromLocalFile(self.focuspath))
        queryimpl.setQuery(self.querysource)

        buf = QBuffer()
        buf.open(QBuffer.ReadWrite)
        queryimpl.evaluateTo(buf)
        buf.close()
        data = buf.data()
        return data
示例#12
0
文件: index.py 项目: cefn/xmlorgmode
 def __init__(self, datapath, querypath):
     super(QueryDisplay,self).__init__()
     self.datapath = datapath
     self.querypath = querypath
     self.view = QWebView()
     self.queryimpl = QXmlQuery(QXmlQuery.XQuery10)