
    Mi%,                       S r SSKJr  SSKJrJrJr  SSKJrJ	r	  SSK
Jr  SSKJr  SSKJr  SSKJrJrJrJrJrJrJrJr  \(       a  SS	KJr   " S
 S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r  " S S\5      r! " S S\5      r" " S S\5      r# " S S\5      r$ " S S\5      r% " S  S!\5      r& " S" S#\5      r' " S$ S%\5      r(g&)'zBSlide-related custom element classes, including those for masters.    )annotations)TYPE_CHECKINGCallablecast)parse_from_template	parse_xml)CT_GradientFillPropertiesnsdecls)	XsdString)BaseOxmlElementChoiceOneAndOnlyOneOptionalAttributeRequiredAttribute
ZeroOrMore	ZeroOrOneZeroOrOneChoice)CT_GroupShapec                  8    \ rS rSr% SrS\S'   \SS j5       rSrg)	_BaseSlideElement   z=Base class for the six slide types, providing common methods.CT_CommonSlideDatacSldc                .    U R                   R                  $ )z-Return required `p:cSld/p:spTree` grandchild.)r   spTreeselfs    i/var/www/eduai.edurigo.com/storigo/production/storigo_env/lib/python3.13/site-packages/pptx/oxml/slide.pyr   _BaseSlideElement.spTree   s     yy     N)returnr   )	__name__
__module____qualname____firstlineno____doc____annotations__propertyr   __static_attributes__r"   r!   r   r   r      s    G
   r!   r   c                  V    \ rS rSr% SrS\S'   Sr\" SSS9rS	\S
'   \" SSS9r	CS r
Srg)CT_Background%   z`p:bg` element.z)Callable[[CT_BackgroundProperties], None]_insert_bgPr)p:bgPrp:bgRefr0   r"   
successorszCT_BackgroundProperties | NonebgPrr1   c                x    S[        SS5      -  n[        [        [        U5      5      nU R	                  U5        U$ )z5Return a new `p:bgPr` element with noFill properties.z4<p:bgPr %s>
  <a:noFill/>
  <a:effectLst/>
</p:bgPr>ap)r   r   CT_BackgroundPropertiesr   r/   )r   xmlr4   s      r   add_noFill_bgPrCT_Background.add_noFill_bgPr3   s:    PSZ[^`cSdd+Ys^<$r!   N)r$   r%   r&   r'   r(   r)   _tag_seqr   r4   bgRefr:   r+   r"   r!   r   r-   r-   %   s?    ;; %H+4R,D
(  iB/Er!   r-   c            
          \ rS rSrSrSr\" \" S5      \" S5      \" S5      \" S5      \" S5      \" S	5      4\S
S S9rCS r	Sr
g)r8   ;   z`p:bgPr` element.)	a:noFilla:solidFill
a:gradFill
a:blipFill
a:pattFill	a:grpFillza:effectLstza:effectDagza:extLstr@   rA   rB   rC   rD   rE      Nr2   c                ,    [         R                  " 5       $ )z1Override default to add default gradient subtree.)r	   new_gradFillr   s    r   _new_gradFill%CT_BackgroundProperties._new_gradFillV   s    (5577r!   r"   )r$   r%   r&   r'   r(   r<   r   r   eg_fillPropertiesrI   r+   r"   r!   r   r8   r8   ;   sc    
H (:=!< < < ;	
 AB<
 	8r!   r8   c                      \ rS rSr% SrS\S'   S\S'   Sr\" S\S	S
 S9rS\S'   \	" S5      r
S\S'   C\" S\SS9rS\S'   SS jrSS jrSrg
)r   [   z`p:cSld` element.zCallable[[], None]
_remove_bgzCallable[[], CT_Background]get_or_add_bg)p:bgp:spTreezp:custDataLstz
p:controlsp:extLstrP      Nr2   zCT_Background | NonebgrQ   r   r   name )defaultstrc                    U R                   nUb  UR                  c  U R                  5       n[        [        UR                  5      $ )zReturn `p:bg/p:bgPr` grandchild.

If no such grandchild is present, any existing `p:bg` child is first removed and a new
default `p:bg` with noFill settings is added.
)rT   r4   _change_to_noFill_bgr   r8   r   rT   s     r   get_or_add_bgPr"CT_CommonSlideData.get_or_add_bgPrk   s:     WW:**,B+RWW55r!   c                f    U R                  5         U R                  5       nUR                  5         U$ )z]Establish a `p:bg` child with no-fill settings.

Any existing `p:bg` child is first removed.
)rN   rO   r:   r[   s     r   rZ   'CT_CommonSlideData._change_to_noFill_bgv   s-    
 	!
	r!   r"   )r#   r8   )r#   r-   )r$   r%   r&   r'   r(   r)   r<   r   rT   r   r   r   r   rU   r\   rZ   r+   r"   r!   r   r   r   [   si    ""..NH(8AB< B  **5FM5!	2D# 	6r!   r   c                  N    \ rS rSr% SrSr\" S5      rS\S'   C\	S
S j5       r
Srg	)CT_NotesMaster   z5`p:notesMaster` element, root of a notes master part.)p:cSldp:clrMapp:hfzp:notesStylerR   rc   r   r   c                4    [        [        [        S5      5      $ )zLReturn a new `p:notesMaster` element based on the built-in default template.notesMaster)r   ra   r   clss    r   new_defaultCT_NotesMaster.new_default   s     N$7$FGGr!   r"   N)r#   ra   )r$   r%   r&   r'   r(   r<   r   r   r)   classmethodrj   r+   r"   r!   r   ra   ra      s1    ?IH,X6D
6H Hr!   ra   c                  N    \ rS rSr% SrSr\" S5      rS\S'   C\	S
S j5       r
Srg	)CT_NotesSlide   z.`p:notes` element, root of a notes slide part.)rc   p:clrMapOvrrR   rc   r   r   c                4    [        [        [        S5      5      $ )zReturn a new ``<p:notes>`` element based on the default template.

Note that the template does not include placeholders, which must be subsequently cloned
from the notes master.
notes)r   rn   r   rh   s    r   newCT_NotesSlide.new   s     M#6w#?@@r!   r"   N)r#   rn   )r$   r%   r&   r'   r(   r<   r   r   r)   rl   rs   r+   r"   r!   r   rn   rn      s1    84H,X6D
6A Ar!   rn   c                      \ rS rSr% SrSr\" S5      rS\S'   \	" S\SS	 S
9r
\	" S\SS	 S
9rC\SS j5       r\S 5       rS rS r\S 5       r\S 5       r\S 5       rSrg	)CT_Slide   z=`p:sld` element, root element of a slide part (XML document).)rc   rp   p:transitionp:timingrR   rc   r   r   rp      Nr2   ry      c                P    [        [        [        U R                  5       5      5      $ )z:Return new `p:sld` element configured as base slide shape.)r   rv   r   _sld_xmlrh   s    r   rs   CT_Slide.new   s     Hi788r!   c                .    U R                   R                  $ )z0Return `p:bg` grandchild or None if not present.)r   rT   r   s    r   rT   CT_Slide.bg   s     yy||r!   c                D    U R                   nUc  U R                  5       nU$ )a]  Return parent element for a new `p:video` child element.

The `p:video` element causes play controls to appear under a video
shape (pic shape containing video). There can be more than one video
shape on a slide, which causes the precondition to vary. It needs to
handle the case when there is no `p:sld/p:timing` element and when
that element already exists. If the case isn't simple, it just nukes
what's there and adds a fresh one. This could theoretically remove
desired existing timing information, but there isn't any evidence
available to me one way or the other, so I've taken the simple
approach.
)_childTnLst_add_childTnLst)r   
childTnLsts     r   get_or_add_childTnLstCT_Slide.get_or_add_childTnLst   s)     %%
--/Jr!   c                    U R                  U R                  5       5        [        U R                  5       5      nU R	                  U5        UR                  S5      S   $ )zAdd `./p:timing/p:tnLst/p:par/p:cTn/p:childTnLst` descendant.

Any existing `p:timing` child element is ruthlessly removed and
replaced.
z"./p:tnLst/p:par/p:cTn/p:childTnLstr   )removeget_or_add_timingr   _childTnLst_timing_xml_insert_timingxpath)r   timings     r   r   CT_Slide._add_childTnLst   sO     	D**,-46689F#||@A!DDr!   c                >    U R                  S5      nU(       d  gUS   $ )znReturn `./p:timing/p:tnLst/p:par/p:cTn/p:childTnLst` descendant.

Return None if that element is not present.
z+./p:timing/p:tnLst/p:par/p:cTn/p:childTnLstNr   )r   )r   childTnLstss     r   r   CT_Slide._childTnLst   s#     jj!NO1~r!   c                     S[        S5      -  $ )Nz<p:timing %s>
  <p:tnLst>
    <p:par>
      <p:cTn id="1" dur="indefinite" restart="never" nodeType="tmRoot">
        <p:childTnLst/>
      </p:cTn>
    </p:par>
  </p:tnLst>
</p:timing>r7   r
   r"   r!   r   r   CT_Slide._childTnLst_timing_xml   s    	 $CL	)	
r!   c                 "    S[        SSS5      -  $ )Na  <p:sld %s>
  <p:cSld>
    <p:spTree>
      <p:nvGrpSpPr>
        <p:cNvPr id="1" name=""/>
        <p:cNvGrpSpPr/>
        <p:nvPr/>
      </p:nvGrpSpPr>
      <p:grpSpPr/>
    </p:spTree>
  </p:cSld>
  <p:clrMapOvr>
    <a:masterClrMapping/>
  </p:clrMapOvr>
</p:sld>r6   r7   rr
   r"   r!   r   r}   CT_Slide._sld_xml   s     !c3/0	
r!   r"   )r#   rv   )r$   r%   r&   r'   r(   r<   r   r   r)   r   	clrMapOvrr   rl   rs   r*   rT   r   r   r   staticmethodr   r}   r+   r"   r!   r   rv   rv      s    GPH,X6D
6-HQRLAIzhqrl;F9 9  $	E   
 
 
 
r!   rv   c                  :    \ rS rSr% SrSr\" S5      rS\S'   CSr	g)	CT_SlideLayout   z3`p:sldLayout` element, root of a slide layout part.)rc   rp   rx   ry   re   rR   rc   r   r   r"   N)
r$   r%   r&   r'   r(   r<   r   r   r)   r+   r"   r!   r   r   r      s    =XH,X6D
6r!   r   c                  4    \ rS rSr% SrS\S'   \" S5      rSrg)CT_SlideLayoutIdListi  z`p:sldLayoutIdLst` element, child of `p:sldMaster`.

Contains references to the slide layouts that inherit from the slide master.
zlist[CT_SlideLayoutIdListEntry]sldLayoutId_lstzp:sldLayoutIdr"   N)	r$   r%   r&   r'   r(   r)   r   sldLayoutIdr+   r"   r!   r   r   r     s    
 54_-Kr!   r   c                  6    \ rS rSr% Sr\" S\5      rS\S'   Sr	g)CT_SlideLayoutIdListEntryi  z_`p:sldLayoutId` element, child of `p:sldLayoutIdLst`.

Contains a reference to a slide layout.
zr:idrX   rIdr"   N)
r$   r%   r&   r'   r(   r   r   r   r)   r+   r"   r!   r   r   r     s    
 !3C3r!   r   c                  b    \ rS rSr% SrS\S'   Sr\" S5      rS\S'   \	" S	\S
S S9r
S\S'   CSrg)CT_SlideMasteri  z3`p:sldMaster` element, root of a slide master part.z"Callable[[], CT_SlideLayoutIdList]get_or_add_sldLayoutIdLst)rc   rd   p:sldLayoutIdLstrx   ry   re   z
p:txStylesrR   rc   r   r   r      Nr2   r   sldLayoutIdLstr"   )r$   r%   r&   r'   r(   r)   r<   r   r   r   r   r+   r"   r!   r   r   r     sF    =AA	H  -X6D
6+4x|,N(  	r!   r   c                  2    \ rS rSrSrSr\" S\SS S9rCSrg)	CT_SlideTimingi0  z>`p:timing` element, specifying animations and timed behaviors.)p:tnLstzp:bldLstrR   r   rS   Nr2   r"   )	r$   r%   r&   r'   r(   r<   r   tnLstr+   r"   r!   r   r   r   0  s    H2HiHQRL9Er!   r   c                  .    \ rS rSrSrS r\S 5       rSrg)CT_TimeNodeListi8  z%`p:tnLst` or `p:childTnList` element.c                r    S[        S5      U R                  U4-  n[        U5      nU R                  U5        g)z>Add a new `p:video` child element for movie having *shape_id*.a  <p:video %s>
  <p:cMediaNode vol="80000">
    <p:cTn id="%d" fill="hold" display="0">
      <p:stCondLst>
        <p:cond delay="indefinite"/>
      </p:stCondLst>
    </p:cTn>
    <p:tgtEl>
      <p:spTgt spid="%d"/>
    </p:tgtEl>
  </p:cMediaNode>
</p:video>
r7   N)r   _next_cTn_idr   append)r   shape_id	video_xmlvideos       r   	add_videoCT_TimeNodeList.add_video;  s@     &clD,=,=xHI 	 )$Er!   c                    U R                  S5      nU Vs/ s H  n[        U5      PM     nn[        U5      S-   $ s  snf )z<Return the next available unique ID (int) for p:cTn element.z/p:sld/p:timing//p:cTn/@idrS   )r   intmax)r   cTn_id_strsid_stridss       r   r   CT_TimeNodeList._next_cTn_idN  s>     jj!=>)45vs6{53x!| 6s   ;r"   N)	r$   r%   r&   r'   r(   r   r*   r   r+   r"   r!   r   r   r   8  s    /&  r!   r   c                  .    \ rS rSrSrSr\" S5      rCSrg)CT_TLMediaNodeVideoiV  z2`p:video` element, specifying video media details.)p:cMediaNoder   r"   N)	r$   r%   r&   r'   r(   r<   r   
cMediaNoder+   r"   r!   r   r   r   V  s    < H~.Jr!   r   N))r(   
__future__r   typingr   r   r   	pptx.oxmlr   r   pptx.oxml.dml.fillr	   pptx.oxml.nsr   pptx.oxml.simpletypesr   pptx.oxml.xmlchemyr   r   r   r   r   r   r   r   pptx.oxml.shapes.groupshaper   r   r-   r8   r   ra   rn   rv   r   r   r   r   r   r   r   r"   r!   r   <module>r      s    H " 0 0 4 8   +	 	 	 9   O ,8o 8@# #L
H& 
HA% A"\
  \
~& .? .4 4& ,_ o </ r!   