
    li*                       d Z ddlmZ ddlmZmZmZ ddlmZ ddl	m
Z ddl	mZ ddlmZ ddlmZ dd	lmZmZmZ dd
lmZ ddlmZ ddlmZ ddlmZmZmZm Z m!Z! ddl"m#Z# erddl$m%Z% ddl&m'Z' ddl(m)Z) ddl*m+Z+m,Z,  G d de      Z- G d de-      Z. G d de-      Z/ G d de-      Z0 G d de-      Z1 G d de-      Z2y) 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                  >    e Zd ZU dZded<   ddZd	dZed
d       Zy)BaseSlidePartzBase 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    t        d| j                  |            j                  S )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     N/var/www/html/eduruby.in/venv/lib/python3.12/site-packages/pptx/parts/slide.py	get_imagezBaseSlidePart.get_image#   s"     K!2!23!78>>>    c                    | j                   j                  |      }| j                  |t        j                        }||fS )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+   z#BaseSlidePart.get_or_add_image_part+   s6     ]]88D
nnZ23r(   c                B    | j                   j                  j                  S )zInternal name of this slide.)r   cSldnamer$   s    r&   r3   zBaseSlidePart.name6   s     }}!!&&&r(   N)r%   strreturnr   )r/   str | IO[bytes])r6   r5   )	__name__
__module____qualname____doc____annotations__r'   r+   propertyr3    r(   r&   r   r      s-     ?	 ' 'r(   r   c                  P    e Zd ZdZed        Zed        Zed        Zed        Z	y)NotesMasterPartz]Notes master part.

    Corresponds to package file `ppt/notesMasters/notesMaster1.xml`.
    c                    | j                  |      }| j                  |      }|j                  |t        j                         |S )zv
        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_defaultzNotesMasterPart.create_defaultB   s=      HHW-((1
##J9  r(   c                .    t        | j                  |       S )zV
        Return the |NotesMaster| object that proxies this notes master part.
        )r   r   r4   s    r&   notes_masterzNotesMasterPart.notes_masterM       
 4==$//r(   c                p    t        t        d      t        j                  |t	        j
                               S )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)r@   r   CTPML_NOTES_MASTERr   new_defaultrE   rF   s     r&   rB   zNotesMasterPart._newT   s2     89&&(	
 	
r(   c                |    t        |j                  d      t        j                  |t	        j
                               S )zCReturn new default theme-part suitable for use with a notes master.z/ppt/theme/theme%d.xml)r
   next_partnamerN   	OFC_THEMEr   rP   rQ   s     r&   rC   zNotesMasterPart._new_theme_parta   s6     !!":;LL++-	
 	
r(   N)
r8   r9   r:   r;   classmethodrI   r   rK   rB   rC   r>   r(   r&   r@   r@   <   sW    
 ! ! 0 0 

 

 
 
r(   r@   c                  P    e Zd ZdZed        Zed        Zed        Zed        Z	y)NotesSlidePartzNotes 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                    |j                   j                  }| j                  |||      }|j                  }|j	                  |j
                         |S )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_partrG   _add_notes_slide_partnotes_slideclone_master_placeholdersrK   )rE   rF   
slide_partrG   notes_slide_partr[   s         r&   newzNotesSlidePart.news   sR     $55GG44WjJ[\&22--.?.L.LMr(   c                X    | j                  t        j                        }|j                  S )z?Return the |NotesMaster| object this notes slide inherits from.)part_related_byr-   NOTES_MASTERrK   )r$   rG   s     r&   rK   zNotesSlidePart.notes_master   %     !00A ---r(   c                .    t        | j                  |       S )zBReturn the |NotesSlide| object that proxies this notes slide part.)r   r   r4   s    r&   r[   zNotesSlidePart.notes_slide   s     $--..r(   c                    t        |j                  d      t        j                  |t	        j
                               }|j                  |t        j                         |j                  |t        j                         |S )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)
rW   rS   rN   PML_NOTES_SLIDEr   r_   r,   r-   rb   SLIDE)rE   rF   r]   rG   r^   s        r&   rZ   z$NotesSlidePart._add_notes_slide_part   sg     *!!"EF	
 	""#4booF"":rxx8r(   N)
r8   r9   r:   r;   rU   r_   r   rK   r[   rZ   r>   r(   r&   rW   rW   l   sW         . .
 / /    r(   rW   c                      e Zd ZdZed        ZddZ	 	 	 	 ddZddZe	d        Z
edd       Zed        Ze	dd	       Ze	dd
       Zd Zy)	SlidePartzISlide part. Corresponds to package files ppt/slides/slide[1-9][0-9]*.xml.c                     | |t         j                  |t        j                               }|j	                  |t
        j                         |S )zReturn newly-created blank slide part.

        The new slide-part has `partname` and a relationship to `slide_layout_part`.
        )rN   	PML_SLIDEr   r_   r,   r-   SLIDE_LAYOUT)rE   partnamerF   slide_layout_partr]   s        r&   r_   zSlidePart.new   s9     2<<(,,.I
.@r(   c                    | j                  t        j                  ||| j                        t        j
                        S )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   r_   r*   r-   CHART)r$   
chart_type
chart_datas      r&   add_chart_partzSlidePart.add_chart_part   s-     ~~immJ
DMMRTVT\T\]]r(   c                    t        |t              rt        j                  nt        j                  }| j                  t        j                  || j                  |      | j                        |      S )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_partz&SlidePart.add_embedded_ole_object_part   sW     +5Wg*FBJJBMM~~''--o> 	
 	
r(   c                    | j                   j                  |      }| j                  |t        j                        }| j                  |t        j
                        }||fS )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_partz%SlidePart.get_or_add_video_media_part   sK     ]]88?
NN:rxx8	NN:rxx8	)##r(   c                b    	 | j                  t        j                         y# t        $ r Y yw xY w)a  
        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)ra   r-   NOTES_SLIDEKeyErrorr4   s    r&   has_notes_slidezSlidePart.has_notes_slide   s2    	  0   		s   " 	..c                    	 | j                  t        j                        }|j
                  S # t        $ r | j	                         }Y |j
                  S w xY w)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.
        )ra   r-   r   r   rZ   r[   r$   r^   s     r&   r[   zSlidePart.notes_slide   sV    	<#33BNNC  +++  	<#99;+++	<s   - AAc                .    t        | j                  |       S )zB
        The |Slide| object representing this slide part.
        )r   r   r4   s    r&   slidezSlidePart.slide   s    
 T]]D))r(   c                P    | j                   j                  }|j                  |       S )zPReturn the slide identifier stored in the presentation part for this slide part.)rF   rY   slide_id)r$   rY   s     r&   r   zSlidePart.slide_id   s%     !LL:: ))$//r(   c                X    | j                  t        j                        }|j                  S )zE|SlideLayout| object the slide in this part inherits appearance from.)ra   r-   rl   slide_layout)r$   rn   s     r&   r   zSlidePart.slide_layout   rc   r(   c                    t         j                  | j                  |       }| j                  |t        j
                         |S )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.
        )rW   r_   rF   r,   r-   r   r   s     r&   rZ   zSlidePart._add_notes_slide_part   s4     *--dllDA'8r(   N)rq   r   rr   r   )rz   zPROG_ID | strr{   r7   )r   r   r6   ztuple[str, str])r6   r   )r6   int)r6   r   )r8   r9   r:   r;   rU   r_   rs   r}   r   r=   r   r   r[   r   r   r   rZ   r>   r(   r&   ri   ri      s    S ^

$

7F

$   
, 
, * * 0 0
 . .
 r(   ri   c                  2    e Zd ZdZed        Zedd       Zy)SlideLayoutPartzjSlide layout part.

    Corresponds to package files ``ppt/slideLayouts/slideLayout[1-9][0-9]*.xml``.
    c                .    t        | j                  |       S )zB
        The |SlideLayout| object representing this part.
        )r   r   r4   s    r&   r   zSlideLayoutPart.slide_layout  rL   r(   c                T    | j                  t        j                        j                  S )z>Slide master from which this slide layout inherits properties.)ra   r-   SLIDE_MASTERslide_masterr4   s    r&   r   zSlideLayoutPart.slide_master  s     ##BOO4AAAr(   N)r6   r   )r8   r9   r:   r;   r   r   r=   r   r>   r(   r&   r   r     s1    
 0 0 B Br(   r   c                  (    e Zd ZdZddZed        Zy)SlideMasterPartzfSlide master part.

    Corresponds to package files ppt/slideMasters/slideMaster[1-9][0-9]*.xml.
    c                8    | j                  |      j                  S )z?Return |SlideLayout| related to this slide-master by key `rId`.)r!   r   r#   s     r&   related_slide_layoutz$SlideMasterPart.related_slide_layout   s      %222r(   c                .    t        | j                  |       S )zB
        The |SlideMaster| object representing this part.
        )r   r   r4   s    r&   r   zSlideMasterPart.slide_master$  rL   r(   N)r%   r5   r6   r   )r8   r9   r:   r;   r   r   r   r>   r(   r&   r   r     s     
3 0 0r(   r   N)3r;   
__future__r   typingr   r   r   pptx.enum.shapesr   pptx.opc.constantsr   rN   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   r@   rW   ri   r   r   r>   r(   r&   <module>r      s      " * * $ 1 6 $ $ C C / & : O O ")- 1'G 'D-
m -
`/ ] / df  f RBm B&0m 0r(   