コード例 #1
0
ファイル: sortblock.py プロジェクト: RichDijk/eXe
    def renderXML(self, style, previewMode=False):
        xml = ""
        mainDict = self.idevice.mainFieldSet.getRenderDictionary(self.mainElements, "", previewMode)

        # trim the feedback items from html space junk

        mainDict["correctoverlay"] = ExportMediaConverter.trimHTMLWhiteSpace(mainDict["correctoverlay"])
        mainDict["wrongoverlay"] = ExportMediaConverter.trimHTMLWhiteSpace(mainDict["wrongoverlay"])

        headFragment = self.idevice.mainFieldSet.applyFileTemplateToDict(
            mainDict, "sort_head_template.xml", previewMode
        )
        xml += headFragment

        for sortableElement in self.sortableItemElements:
            sortableItemId = "sortmeitem" + sortableElement.id

            xml += "<item id='" + sortableItemId + "'>\n<![CDATA["
            xml += sortableElement.renderPreview()
            xml += "]]></item>"

        footerFragment = self.idevice.mainFieldSet.applyFileTemplateToDict(
            mainDict, "sort_foot_template.xml", previewMode
        )
        xml += footerFragment
        return xml
コード例 #2
0
ファイル: memorymatchblock.py プロジェクト: Rafav/iteexe
 def renderXML(self, style):
     xml = ""
     previewMode = False
     mainDict = self.idevice.mainFieldSet.getRenderDictionary(self.mainElements, "", previewMode)
     xml += self.idevice.mainFieldSet.applyFileTemplateToDict(mainDict, \
         "memmatch_template_head.xml", previewMode)
     
     mediaConverter = ExportMediaConverter.getInstance()
     if mediaConverter is not None:
         mainDict['feedbackpositive'] = mediaConverter.reprocessHTML(mainDict['feedbackpositive'])
         mainDict['feedbackpositive'] = ExportMediaConverter.trimHTMLWhiteSpace(mainDict['feedbackpositive'])
         
         mainDict['feedbacknegative'] = mediaConverter.reprocessHTML(mainDict['feedbacknegative'])
         mainDict['feedbacknegative'] = ExportMediaConverter.trimHTMLWhiteSpace(mainDict['feedbackpositive'])
         
         mediaConverter.resizeImg(XMLPage.currentOutputDir/mainDict['cellbackImg_imgsrc'], 50, 50, {}, {"resizemethod" : "stretch"})
         mediaConverter.resizeImg(XMLPage.currentOutputDir/mainDict['coverImg_imgsrc'], 50, 50, {}, {"resizemethod" : "stretch"})
         
         
     
     for memoryMatchElement in self.memoryMatchElements:
         thisObjDict = memoryMatchElement.field.mainFields.getRenderDictionary(\
             memoryMatchElement.elements, "obj", previewMode)
         thisObjDict.update(mainDict)
         objElementFrag = memoryMatchElement.field.mainFields.applyFileTemplateToDict(\
             thisObjDict, "memmatch_template_pairitems.xml", previewMode)
         xml += objElementFrag
     
     xml += self.idevice.mainFieldSet.applyFileTemplateToDict(mainDict, \
         "memmatch_template_footer.xml", previewMode)
     
     return xml
コード例 #3
0
ファイル: sortblock.py プロジェクト: UstadMobile/eXePUB
    def renderXML(self, style, previewMode=False):
        xml = ""
        mainDict = self.idevice.mainFieldSet.getRenderDictionary(
            self.mainElements, "", previewMode)

        #trim the feedback items from html space junk

        mainDict['correctoverlay'] = ExportMediaConverter.trimHTMLWhiteSpace(
            mainDict['correctoverlay'])
        mainDict['wrongoverlay'] = ExportMediaConverter.trimHTMLWhiteSpace(
            mainDict['wrongoverlay'])

        headFragment = self.idevice.mainFieldSet.applyFileTemplateToDict(
            mainDict, "sort_head_template.xml", previewMode)
        xml += headFragment

        for sortableElement in self.sortableItemElements:
            sortableItemId = "sortmeitem" + sortableElement.id

            xml += "<item id='" + sortableItemId + "'>\n<![CDATA["
            xml += sortableElement.renderPreview()
            xml += "]]></item>"

        footerFragment = self.idevice.mainFieldSet.applyFileTemplateToDict(
            mainDict, "sort_foot_template.xml", previewMode)
        xml += footerFragment
        return xml
コード例 #4
0
    def renderXML(self, style):
        xml = ""
        previewMode = False
        mainDict = self.idevice.mainFieldSet.getRenderDictionary(
            self.mainElements, "", previewMode)
        xml += self.idevice.mainFieldSet.applyFileTemplateToDict(mainDict, \
            "memmatch_template_head.xml", previewMode)

        mediaConverter = ExportMediaConverter.getInstance()
        if mediaConverter is not None:
            mainDict['feedbackpositive'] = mediaConverter.reprocessHTML(
                mainDict['feedbackpositive'])
            mainDict[
                'feedbackpositive'] = ExportMediaConverter.trimHTMLWhiteSpace(
                    mainDict['feedbackpositive'])

            mainDict['feedbacknegative'] = mediaConverter.reprocessHTML(
                mainDict['feedbacknegative'])
            mainDict[
                'feedbacknegative'] = ExportMediaConverter.trimHTMLWhiteSpace(
                    mainDict['feedbackpositive'])

            mediaConverter.resizeImg(
                XMLPage.currentOutputDir / mainDict['cellbackImg_imgsrc'], 50,
                50, {}, {"resizemethod": "stretch"})
            mediaConverter.resizeImg(
                XMLPage.currentOutputDir / mainDict['coverImg_imgsrc'], 50, 50,
                {}, {"resizemethod": "stretch"})

        for memoryMatchElement in self.memoryMatchElements:
            thisObjDict = memoryMatchElement.field.mainFields.getRenderDictionary(\
                memoryMatchElement.elements, "obj", previewMode)
            thisObjDict.update(mainDict)
            objElementFrag = memoryMatchElement.field.mainFields.applyFileTemplateToDict(\
                thisObjDict, "memmatch_template_pairitems.xml", previewMode)
            xml += objElementFrag

        xml += self.idevice.mainFieldSet.applyFileTemplateToDict(mainDict, \
            "memmatch_template_footer.xml", previewMode)

        return xml
コード例 #5
0
    def renderXML(self, style):
        xml = u""

        mediaConverter = ExportMediaConverter.getInstance()
        width = mediaConverter.getProfileWidth()
        height = mediaConverter.getProfileHeight()

        if mediaConverter is not None:
            for imgElement in self.chanceImageElements:
                if imgElement.field.imageResource is not None:
                    mediaConverter.resizeImg(XMLPage.currentOutputDir/imgElement.field.imageResource.storageName, \
                         width, height, {}, {"resizemethod" : "stretch"})

        xml += "<idevice type='hangman' id='%s'>\n" % self.idevice.id
        xml += "<chanceimages>\n"
        for imgElement in self.chanceImageElements:
            if imgElement.field.imageResource is not None:
                xml += "<img src='%s'/>\n" % imgElement.field.imageResource.storageName

        xml += "</chanceimages>\n"

        xml += "<alphabet>%s</alphabet>\n" % self.alphabetElement.renderView()
        xml += "<wrongguessmessage><![CDATA[ %s ]]></wrongguessmessage>\n" % self.wrongGuessTextElement.renderView(
        )
        xml += "<lostlevelmessage><![CDATA[ %s ]]></lostlevelmessage>\n" % self.lostLevelTextElement.renderView(
        )
        xml += "<levelpassedmessage><![CDATA[ %s ]]></levelpassedmessage>\n" % self.levelPassedTextElement.renderView(
        )
        xml += "<gamewonmessage><![CDATA[ %s ]]></gamewonmessage>\n" % self.gameWonTextElement.renderView(
        )

        xml += "<words>"
        for wordIndex in range(0, len(self.wordElements)):
            word = self.wordElements[wordIndex]
            if word != "":
                xml += "<word>\n<hint>%(hint)s</hint>\n<answer>%(answer)s</answer>\n</word>\n" \
                    % {"answer" : word.renderView() , "hint" : self.hintElements[wordIndex].renderView()}

        xml += "</words>\n"

        xml += "</idevice>\n"
        return xml
コード例 #6
0
 def renderXML(self, style):
     xml = u""
     
     mediaConverter = ExportMediaConverter.getInstance()
     width = mediaConverter.getProfileWidth()
     height = mediaConverter.getProfileHeight()
     
     if mediaConverter is not None:
         for imgElement in  self.chanceImageElements:
             if imgElement.field.imageResource is not None:
                 mediaConverter.resizeImg(XMLPage.currentOutputDir/imgElement.field.imageResource.storageName, \
                      width, height, {}, {"resizemethod" : "stretch"})
     
     xml += "<idevice type='hangman' id='%s'>\n" % self.idevice.id
     xml += "<chanceimages>\n"
     for imgElement in  self.chanceImageElements:
         if imgElement.field.imageResource is not None:
             xml += "<img src='%s'/>\n" % imgElement.field.imageResource.storageName
         
     xml += "</chanceimages>\n"
     
     xml += "<alphabet>%s</alphabet>\n" % self.alphabetElement.renderView()
     xml += "<wrongguessmessage><![CDATA[ %s ]]></wrongguessmessage>\n" % self.wrongGuessTextElement.renderView()
     xml += "<lostlevelmessage><![CDATA[ %s ]]></lostlevelmessage>\n" % self.lostLevelTextElement.renderView()
     xml += "<levelpassedmessage><![CDATA[ %s ]]></levelpassedmessage>\n" % self.levelPassedTextElement.renderView()
     xml += "<gamewonmessage><![CDATA[ %s ]]></gamewonmessage>\n" % self.gameWonTextElement.renderView()
     
     xml += "<words>"
     for wordIndex in range(0, len(self.wordElements)):
         word = self.wordElements[wordIndex]
         if word != "":
             xml += "<word>\n<hint>%(hint)s</hint>\n<answer>%(answer)s</answer>\n</word>\n" \
                 % {"answer" : word.renderView() , "hint" : self.hintElements[wordIndex].renderView()}
         
     xml += "</words>\n"
     
     xml += "</idevice>\n"
     return xml
コード例 #7
0
    def export(self, package):
        """ 
        Export to XML files
        Cleans up the previous packages pages and performs the export
        TODO: Make output directory for each type of export media profile
        """
        outputDir = self.filename

        #Command line option to override language for export
        if self.langOverride != None:
            package.dublinCore.language = self.langOverride

        #track the number of working idevices on a page
        #if 0 do not put page in TOC
        numDevicesByPage = {}

        #track idevices that dont really  export
        nonDevices = []

        #copy needed files
        if not outputDir.exists():
            outputDir.mkdir()

        #
        #This is passed from the command line export
        #
        if self.forceMediaOnly == True:
            package.mxmlforcemediaonly = "true"
        """
        Now go through the list of target media profiles and do the conversion
        for each one here.
        
        For now this will just go through and create them - will settle on the
        last one
        """

        if package.mxmlprofilelist is None or package.mxmlprofilelist == "":
            package.mxmlprofilelist = "nokia"

        profileList = package.mxmlprofilelist.split(",")
        """
        Go through all the profiles in the list - and make a directory if
        it not just 'default'.  For each one make a exportmediaconverter
        and then go through the export routine
        """
        for currentProfile in profileList:
            mediaConverter = None
            currentOutputDir = outputDir

            if currentProfile != "default":
                mediaConverter = ExportMediaConverter(currentProfile)
                mediaConverter.loadConfigVals()
                mediaConverter.setCurrentPackage(package)
                ExportMediaConverter.autoMediaOnly = package.mxmlforcemediaonly

                currentOutputDir = outputDir.joinpath(currentProfile)
                if not currentOutputDir.exists():
                    currentOutputDir.mkdir()

                ExportMediaConverter.setWorkingDir(currentOutputDir)

            self.copyFiles(package, currentOutputDir)
            self.pages = [XMLPage("index", 1, package.root)]
            self.generatePages(package.root, 1)
            uniquifyNames(self.pages)

            prevPage = None
            thisPage = self.pages[0]

            for nextPage in self.pages[1:]:
                pageDevCount = thisPage.save(currentOutputDir, prevPage, \
                                             nextPage, self.pages, nonDevices)
                numDevicesByPage[thisPage.name] = pageDevCount
                prevPage = thisPage
                thisPage = nextPage

            pageDevCount = thisPage.save(currentOutputDir, prevPage, None,
                                         self.pages, nonDevices)
            numDevicesByPage[thisPage.name] = pageDevCount

            self._writeTOCXML(currentOutputDir, numDevicesByPage, nonDevices,
                              package)
コード例 #8
0
    def export(self, package):
        """ 
        Export to XML files
        Cleans up the previous packages pages and performs the export
        TODO: Make output directory for each type of export media profile
        """
        outputDir = self.filename
        
        #Command line option to override language for export
        if self.langOverride != None:
            package.dublinCore.language = self.langOverride
        
        #track the number of working idevices on a page
        #if 0 do not put page in TOC
        numDevicesByPage = {}
        
        #track idevices that dont really  export
        nonDevices = []
        
        #copy needed files
        if not outputDir.exists(): 
            outputDir.mkdir()
        
        #
        #This is passed from the command line export
        #
        if self.forceMediaOnly == True:
            package.mxmlforcemediaonly = "true"
        
        """
        Now go through the list of target media profiles and do the conversion
        for each one here.
        
        For now this will just go through and create them - will settle on the
        last one
        """
        
        if package.mxmlprofilelist is None or package.mxmlprofilelist == "":
            package.mxmlprofilelist = "nokia"
        
        
        
        profileList = package.mxmlprofilelist.split(",")
        """
        Go through all the profiles in the list - and make a directory if
        it not just 'default'.  For each one make a exportmediaconverter
        and then go through the export routine
        """
        for currentProfile in profileList:
            mediaConverter = None
            currentOutputDir = outputDir    

            if currentProfile != "default":
                mediaConverter = ExportMediaConverter(currentProfile)
                mediaConverter.loadConfigVals()
                mediaConverter.setCurrentPackage(package)
                ExportMediaConverter.autoMediaOnly = package.mxmlforcemediaonly
                
                currentOutputDir = outputDir.joinpath(currentProfile)
                if not currentOutputDir.exists(): 
                    currentOutputDir.mkdir()
            
            
                ExportMediaConverter.setWorkingDir(currentOutputDir)
    
            
            self.copyFiles(package, currentOutputDir)
            self.pages = [ XMLPage("index", 1, package.root) ]
            self.generatePages(package.root, 1)
            uniquifyNames(self.pages)
            
        
            prevPage = None
            thisPage = self.pages[0]
            
    
            for nextPage in self.pages[1:]:
                pageDevCount = thisPage.save(currentOutputDir, prevPage, \
                                             nextPage, self.pages, nonDevices)
                numDevicesByPage[thisPage.name] = pageDevCount
                prevPage = thisPage
                thisPage = nextPage
                 
            pageDevCount = thisPage.save(currentOutputDir, prevPage, None, self.pages, nonDevices)
            numDevicesByPage[thisPage.name] = pageDevCount
            
            self._writeTOCXML(currentOutputDir, numDevicesByPage, nonDevices, package)