def new_placeholder_sp(id_, name, ph_type, orient, sz, idx): """ Return a new ``<p:sp>`` element tree configured as a placeholder shape. """ tmpl = CT_Shape._ph_sp_tmpl() xml = tmpl % (id_, name) sp = parse_xml(xml) ph = sp.nvSpPr.nvPr.get_or_add_ph() ph.type = ph_type ph.idx = idx ph.orient = orient ph.sz = sz placeholder_types_that_have_a_text_frame = ( PP_PLACEHOLDER.TITLE, PP_PLACEHOLDER.CENTER_TITLE, PP_PLACEHOLDER.SUBTITLE, PP_PLACEHOLDER.BODY, PP_PLACEHOLDER.OBJECT, ) if ph_type in placeholder_types_that_have_a_text_frame: sp.append(CT_TextBody.new()) return sp
def new_placeholder_sp(id_, name, ph_type, orient, sz, idx): """ Return a new ``<p:sp>`` element tree configured as a placeholder shape. """ xml = CT_Shape._ph_sp_tmpl % (id_, name) sp = parse_xml_bytes(xml) # placeholder shapes get a "no group" lock SubElement(sp.nvSpPr.cNvSpPr, 'a:spLocks') sp.nvSpPr.cNvSpPr[qn('a:spLocks')].set('noGrp', '1') # placeholder (ph) element attributes values vary by type ph = SubElement(sp.nvSpPr.nvPr, 'p:ph') if ph_type != PH_TYPE_OBJ: ph.set('type', ph_type) if orient != PH_ORIENT_HORZ: ph.set('orient', orient) if sz != PH_SZ_FULL: ph.set('sz', sz) if idx != 0: ph.set('idx', str(idx)) placeholder_types_that_have_a_text_frame = ( PH_TYPE_TITLE, PH_TYPE_CTRTITLE, PH_TYPE_SUBTITLE, PH_TYPE_BODY, PH_TYPE_OBJ) if ph_type in placeholder_types_that_have_a_text_frame: sp.append(CT_TextBody.new_txBody()) objectify.deannotate(sp, cleanup_namespaces=True) return sp
def _new_txPr(self): return CT_TextBody.new_txPr()
def _new_txBody(self): return CT_TextBody.new_p_txBody()