def make_function_from_root(root, tmplt_obj, suffix=''):
    """build python source to make the Elements from scratch"""

    suffix = suffix.replace(',', '_')
    if suffix in func_quick_lookupD:
        n = 2
        while '%s_%i' % (suffix, n) in func_quick_lookupD:
            n += 1
        suffix = '%s_%i' % (suffix, n)

    func_name = python_def_from_tag(root.tag)
    if suffix:
        func_name = func_name + '_%s' % python_def_from_tag(suffix)

    # Used after code is generated
    func_quick_lookupD[suffix] = func_name

    keyL = sorted(root.keys())

    sL = ['def %s():' % (func_name, )]
    sL.append('    ')
    doc_str = 'Build Element %s' % force_to_short(root.tag)
    if suffix:
        doc_str = doc_str + ' for %s' % suffix
    sL.append('''    """%s """''' % doc_str)
    sL.append('    ')

    sOut = tmplt_obj.elem_tostring(root, include_ns=False, use_linebreaks=True)
    sOut = fix_utf8(sOut)
    sL.append('''    elem = build_element( """%s""" )''' % sOut)

    sL.append('    ')
    sL.append('    return elem\n\n')

    return '\n'.join(sL)
Example #2
0
def make_function_from_root( root, tmplt_obj, suffix='' ):
    """build python source to make the Elements from scratch"""
    
    suffix = suffix.replace(',','_')
    if suffix in func_quick_lookupD:
        n = 2
        while '%s_%i'%(suffix, n) in func_quick_lookupD:
            n += 1
        suffix = '%s_%i'%(suffix, n)
    
    func_name = python_def_from_tag(root.tag)
    if suffix:
        func_name = func_name + '_%s'%python_def_from_tag(suffix)
        
    # Used after code is generated
    func_quick_lookupD[suffix] = func_name    
    dname = root.get( force_to_tag('style:display-name'), '' )
    lname = root.get( force_to_tag('style:name'), '' )
    if dname and lname:
        layout_name_lookupD[dname] = lname
        display_name_lookupD[lname] = dname
    
    keyL = sorted( root.keys() )
    
    sL = ['def %s():'%(func_name, )]
    sL.append( '    ' )
    doc_str = 'Build Element %s'%force_to_short(root.tag)
    if suffix:
        doc_str = doc_str + ' for %s'%suffix
    sL.append( '''    """%s """'''%doc_str )
    sL.append( '    ' )
    
    sOut = tmplt_obj.elem_tostring(root, include_ns=False, use_linebreaks=True )
    sOut = fix_utf8( sOut )
    sL.append( '''    elem = build_element( """%s""" )'''%sOut )
    
    sL.append( '    ' )
    sL.append( '    return elem\n\n' )
    
    return '\n'.join(sL)
        )
        fOut.write('\n\nlayout_page_name_lookupD = {}')

        fOut.write('\n\n')

        # do style:presentation-page-layout

        for style in odp.content_body_presentation.getchildren():
            layout_name = style.get(
                force_to_tag('presentation:presentation-page-layout-name'),
                'nofam')
            master_name = style.get(force_to_tag('draw:master-page-name'),
                                    'noname')

            if layout_name == 'nofam':
                suffix = force_to_short(style.tag)
            else:
                suffix = layout_name
                master_page_name_lookupD[layout_name] = master_name
                layout_page_name_lookupD[master_name] = layout_name

            fOut.write(
                make_function_from_root(style,
                                        odp.content_xml_obj,
                                        suffix=suffix).encode('utf-8'))

        fOut.write('\n\n# Set values in func_quick_lookupD\n')
        keyL = sorted(func_quick_lookupD.keys())
        for key in keyL:
            fOut.write('func_quick_lookupD["%s"] = %s\n' %
                       (key, func_quick_lookupD[key]))
Example #4
0
        
        
        fOut.write('\n\n# Use layout_page_name_lookupD for access layout page names')
        fOut.write('\n# index=layout name (e.g. "Master1-Layout24-tbl-Title-and-Table"), value=master name (e.g. "Master1-PPL24")')
        fOut.write( '\n\nlayout_page_name_lookupD = {}' )
        
        fOut.write('\n\n')
        
        # do style:presentation-page-layout
        
        for style in odp.content_body_presentation.getchildren():
            layout_name = style.get( force_to_tag('presentation:presentation-page-layout-name'), 'nofam' ) 
            master_name = style.get( force_to_tag('draw:master-page-name'), 'noname' )
            
            if layout_name == 'nofam':
                suffix = force_to_short(style.tag)
            else:
                suffix = layout_name
                master_page_name_lookupD[ layout_name ] = master_name
                layout_page_name_lookupD[ master_name ] = layout_name
                
            fOut.write( make_function_from_root( style, odp.content_xml_obj, suffix=suffix ).encode('utf-8') )


        fOut.write('\n\n# Set values in func_quick_lookupD\n')
        keyL = sorted( func_quick_lookupD.keys() )
        for key in keyL:
            fOut.write( 'func_quick_lookupD["%s"] = %s\n'%(key, func_quick_lookupD[key]) )

        fOut.write('\n\n')