
    ~Zi*                       S r SSKJr  SSKJrJrJr  SSKJr  SSK	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  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!  SSK"J#r#  \(       a  SSK$J%r%  SSK&J'r'  SSK(J)r)  SSK*J+r+J,r,   " S S\5      r- " S S\-5      r. " S S\-5      r/ " S S\-5      r0 " S S\-5      r1 " S S\-5      r2g) zSlide and related objects.    )annotations)IOTYPE_CHECKINGcast)PROG_ID)CONTENT_TYPE)RELATIONSHIP_TYPE)XmlPart)PackURI)CT_NotesMasterCT_NotesSlideCT_Slide)CT_OfficeStyleSheet)	ChartPart)EmbeddedPackagePart)NotesMaster
NotesSlideSlideSlideLayoutSlideMaster)lazyproperty)	ChartData)XL_CHART_TYPE)Video)Image	ImagePartc                  L    \ rS rSr% SrS\S'   S
S jrSS jr\SS j5       r	Sr
g	)BaseSlidePart   zBase class for slide parts.

This includes slide, slide-layout, and slide-master parts, but also notes-slide,
notes-master, and handout-master parts.
r   _elementc                L    [        SU R                  U5      5      R                  $ )zReturn an |Image| object containing the image related to this slide by *rId*.

Raises |KeyError| if no image is related by that id, which would generally indicate a
corrupted .pptx file.
r   )r   related_partimageselfrIds     j/var/www/eduai.edurigo.com/question_generate/ques_gen_env/lib/python3.13/site-packages/pptx/parts/slide.py	get_imageBaseSlidePart.get_image#   s"     K!2!23!78>>>    c                ~    U R                   R                  U5      nU R                  U[        R                  5      nX#4$ )a   Return `(image_part, rId)` pair corresponding to `image_file`.

The returned |ImagePart| object contains the image in `image_file` and is
related to this slide with the key `rId`. If either the image part or
relationship already exists, they are reused, otherwise they are newly created.
)_packageget_or_add_image_part	relate_toRTIMAGE)r%   
image_file
image_partr&   s       r'   r-   #BaseSlidePart.get_or_add_image_part+   s4     ]]88D
nnZ2r*   c                B    U R                   R                  R                  $ )zInternal name of this slide.)r    cSldnamer%   s    r'   r6   BaseSlidePart.name6   s     }}!!&&&r*    N)r&   strreturnr   )r1   str | IO[bytes])r;   r:   )__name__
__module____qualname____firstlineno____doc____annotations__r(   r-   propertyr6   __static_attributes__r9   r*   r'   r   r      s-     ?	 ' 'r*   r   c                  X    \ rS rSrSr\S 5       r\S 5       r\S 5       r	\S 5       r
Srg)	NotesMasterPart<   zUNotes master part.

Corresponds to package file `ppt/notesMasters/notesMaster1.xml`.
c                    U R                  U5      nU R                  U5      nUR                  U[        R                  5        U$ )z^
Create and return a default notes master part, including creating the
new theme it requires.
)_new_new_theme_partr.   r/   THEME)clspackagenotes_master_part
theme_parts       r'   create_defaultNotesMasterPart.create_defaultB   s=      HHW-((1
##J9  r*   c                .    [        U R                  U 5      $ )zF
Return the |NotesMaster| object that proxies this notes master part.
)r   r    r7   s    r'   notes_masterNotesMasterPart.notes_masterM       
 4==$//r*   c                r    [        [        S5      [        R                  U[        R
                  " 5       5      $ )z
Create and return a standalone, default notes master part based on
the built-in template (without any related parts, such as theme).
z"/ppt/notesMasters/notesMaster1.xml)rF   r   CTPML_NOTES_MASTERr   new_defaultrL   rM   s     r'   rI   NotesMasterPart._newT   s2     89&&(	
 	
r*   c                ~    [        UR                  S5      [        R                  U[        R
                  " 5       5      $ )zCReturn new default theme-part suitable for use with a notes master.z/ppt/theme/theme%d.xml)r
   next_partnamerW   	OFC_THEMEr   rY   rZ   s     r'   rJ   NotesMasterPart._new_theme_parta   s6     !!":;LL++-	
 	
r*   r9   N)r=   r>   r?   r@   rA   classmethodrP   r   rS   rI   rJ   rD   r9   r*   r'   rF   rF   <   sW    
 ! ! 0 0 

 

 
 
r*   rF   c                  X    \ rS rSrSr\S 5       r\S 5       r\S 5       r	\S 5       r
Srg)	NotesSlidePartl   zNotes slide part.

Contains the slide notes content and the layout for the slide handout page.
Corresponds to package file `ppt/notesSlides/notesSlide[1-9][0-9]*.xml`.
c                    UR                   R                  nU R                  XU5      nUR                  nUR	                  UR
                  5        U$ )a  Return new |NotesSlidePart| for the slide in `slide_part`.

The new notes-slide part is based on the (singleton) notes master and related to
both the notes-master part and `slide_part`. If no notes-master is present,
one is created based on the default template.
)presentation_partrN   _add_notes_slide_partnotes_slideclone_master_placeholdersrS   )rL   rM   
slide_partrN   notes_slide_partrg   s         r'   newNotesSlidePart.news   sP     $55GG44WJ[\&22--.?.L.LMr*   c                X    U R                  [        R                  5      nUR                  $ )z?Return the |NotesMaster| object this notes slide inherits from.)part_related_byr/   NOTES_MASTERrS   )r%   rN   s     r'   rS   NotesSlidePart.notes_master   %     !00A ---r*   c                .    [        U R                  U 5      $ )zBReturn the |NotesSlide| object that proxies this notes slide part.)r   r    r7   s    r'   rg   NotesSlidePart.notes_slide   s     $--..r*   c                   [        UR                  S5      [        R                  U[        R
                  " 5       5      nUR                  U[        R                  5        UR                  U[        R                  5        U$ )zCreate and return a new notes-slide part.

The return part is fully related, but has no shape content (i.e. placeholders
not cloned).
z!/ppt/notesSlides/notesSlide%d.xml)
rb   r]   rW   PML_NOTES_SLIDEr   rk   r.   r/   ro   SLIDE)rL   rM   ri   rN   rj   s        r'   rf   $NotesSlidePart._add_notes_slide_part   sg     *!!"EF	
 	""#4booF"":rxx8r*   r9   N)r=   r>   r?   r@   rA   r`   rk   r   rS   rg   rf   rD   r9   r*   r'   rb   rb   l   sW         . .
 / /    r*   rb   c                      \ rS rSrSr\S 5       rSS jr    SS jrSS jr	\
S 5       r\SS j5       r\S	 5       r\
SS
 j5       r\
SS j5       rS rSrg)	SlidePart   zISlide part. Corresponds to package files ppt/slides/slide[1-9][0-9]*.xml.c                    U " U[         R                  U[        R                  " 5       5      nUR	                  U[
        R                  5        U$ )zuReturn newly-created blank slide part.

The new slide-part has `partname` and a relationship to `slide_layout_part`.
)rW   	PML_SLIDEr   rk   r.   r/   SLIDE_LAYOUT)rL   partnamerM   slide_layout_partri   s        r'   rk   SlidePart.new   s9     2<<(,,.I
.@r*   c                    U R                  [        R                  " XU R                  5      [        R
                  5      $ )zReturn str rId of new |ChartPart| object containing chart of `chart_type`.

The chart depicts `chart_data` and is related to the slide contained in this
part by `rId`.
)r.   r   rk   r,   r/   CHART)r%   
chart_type
chart_datas      r'   add_chart_partSlidePart.add_chart_part   s+     ~~immJDMMRTVT\T\]]r*   c                    [        U[        5      (       a  [        R                  O[        R                  nU R                  [        R                  " XR                  U5      U R                  5      U5      $ )zHReturn rId of newly-added OLE-object part formed from `ole_object_file`.)

isinstancer   r/   PACKAGE
OLE_OBJECTr.   r   factory_blob_from_filer,   )r%   prog_idole_object_filerelationship_types       r'   add_embedded_ole_object_part&SlidePart.add_embedded_ole_object_part   sX     +5Wg*F*FBJJBMM~~''--o> 	
 	
r*   c                    U R                   R                  U5      nU R                  U[        R                  5      nU R                  U[        R
                  5      nX44$ )a  Return rIds for media and video relationships to media part.

A new |MediaPart| object is created if it does not already exist
(such as would occur if the same video appeared more than once in
 a presentation). Two relationships to the media part are created,
one each with MEDIA and VIDEO relationship types. The need for two
appears to be for legacy support for an earlier (pre-Office 2010)
PowerPoint media embedding strategy.
)r,   get_or_add_media_partr.   r/   MEDIAVIDEO)r%   video
media_part	media_rId	video_rIds        r'   get_or_add_video_media_part%SlidePart.get_or_add_video_media_part   sI     ]]88?
NN:rxx8	NN:rxx8	##r*   c                d     U R                  [        R                  5        g! [         a     gf = f)z
Return True if this slide has a notes slide, False otherwise. A notes
slide is created by the :attr:`notes_slide` property when one doesn't
exist; use this property to test for a notes slide without the
possible side-effect of creating one.
FT)rn   r/   NOTES_SLIDEKeyErrorr7   s    r'   has_notes_slideSlidePart.has_notes_slide   s2    	  0   		s   " 
//c                     U R                  [        R                  5      nUR
                  $ ! [         a    U R	                  5       n UR
                  $ f = f)zThe |NotesSlide| instance associated with this slide.

If the slide does not have a notes slide, a new one is created. The same single instance
is returned on each call.
)rn   r/   r   r   rf   rg   r%   rj   s     r'   rg   SlidePart.notes_slide   sV    	<#33BNNC  +++  	<#99;+++	<s   - AAc                .    [        U R                  U 5      $ )z2
The |Slide| object representing this slide part.
)r   r    r7   s    r'   slideSlidePart.slide   s    
 T]]D))r*   c                P    U R                   R                  nUR                  U 5      $ )zPReturn the slide identifier stored in the presentation part for this slide part.)rM   re   slide_id)r%   re   s     r'   r   SlidePart.slide_id   s%     !LL:: ))$//r*   c                X    U R                  [        R                  5      nUR                  $ )zE|SlideLayout| object the slide in this part inherits appearance from.)rn   r/   r}   slide_layout)r%   r   s     r'   r   SlidePart.slide_layout   rq   r*   c                    [         R                  U R                  U 5      nU R                  U[        R
                  5        U$ )z
Return a newly created |NotesSlidePart| object related to this slide
part. Caller is responsible for ensuring this slide doesn't already
have a notes slide part.
)rb   rk   rM   r.   r/   r   r   s     r'   rf   SlidePart._add_notes_slide_part   s4     *--dllDA'8r*   r9   N)r   r   r   r   )r   zPROG_ID | strr   r<   )r   r   r;   ztuple[str, str])r;   r   )r;   int)r;   r   )r=   r>   r?   r@   rA   r`   rk   r   r   r   rC   r   r   rg   r   r   r   rf   rD   r9   r*   r'   ry   ry      s    S ^

$

7F

$   
, 
, * * 0 0
 . .
 r*   ry   c                  <    \ rS rSrSr\S 5       r\SS j5       rSr	g)SlideLayoutParti  zbSlide layout part.

Corresponds to package files ``ppt/slideLayouts/slideLayout[1-9][0-9]*.xml``.
c                .    [        U R                  U 5      $ )z2
The |SlideLayout| object representing this part.
)r   r    r7   s    r'   r   SlideLayoutPart.slide_layout  rU   r*   c                T    U R                  [        R                  5      R                  $ )z>Slide master from which this slide layout inherits properties.)rn   r/   SLIDE_MASTERslide_masterr7   s    r'   r   SlideLayoutPart.slide_master  s     ##BOO4AAAr*   r9   N)r;   r   )
r=   r>   r?   r@   rA   r   r   rC   r   rD   r9   r*   r'   r   r     s1    
 0 0 B Br*   r   c                  2    \ rS rSrSrSS jr\S 5       rSrg)SlideMasterParti  z^Slide master part.

Corresponds to package files ppt/slideMasters/slideMaster[1-9][0-9]*.xml.
c                8    U R                  U5      R                  $ )z?Return |SlideLayout| related to this slide-master by key `rId`.)r"   r   r$   s     r'   related_slide_layout$SlideMasterPart.related_slide_layout   s      %222r*   c                .    [        U R                  U 5      $ )z2
The |SlideMaster| object representing this part.
)r   r    r7   s    r'   r   SlideMasterPart.slide_master$  rU   r*   r9   N)r&   r:   r;   r   )	r=   r>   r?   r@   rA   r   r   r   rD   r9   r*   r'   r   r     s     
3 0 0r*   r   N)3rA   
__future__r   typingr   r   r   pptx.enum.shapesr   pptx.opc.constantsr   rW   r	   r/   pptx.opc.packager
   pptx.opc.packurir   pptx.oxml.slider   r   r   pptx.oxml.themer   pptx.parts.chartr   pptx.parts.embeddedpackager   
pptx.slider   r   r   r   r   	pptx.utilr   pptx.chart.datar   pptx.enum.chartr   
pptx.mediar   pptx.parts.imager   r   r   rF   rb   ry   r   r   r9   r*   r'   <module>r      s      " * * $ 1 6 $ $ C C / & : O O ")- 1'G 'D-
m -
`/ ] / df  f RBm B&0m 0r*   