B
    W²ç_Í  ã               @   s    d Z ddlmZmZmZmZ ddlmZ ddlm	Z
 ddl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 G dd„ deƒZdS )z*|DocumentPart| and closely related objectsé    )Úabsolute_importÚdivisionÚprint_functionÚunicode_literals)ÚDocument)ÚRELATIONSHIP_TYPE)Ú
FooterPartÚ
HeaderPart)ÚNumberingPart)ÚSettingsPart)ÚBaseStoryPart)Ú
StylesPart)ÚInlineShapes)Úlazypropertyc               @   s°   e Zd ZdZdd„ Zdd„ Zedd„ ƒZedd	„ ƒZd
d„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zedd„ ƒZedd„ ƒZdd„ Zedd„ ƒZedd„ ƒZedd„ ƒZed d!„ ƒZd"S )#ÚDocumentParta‘  Main document part of a WordprocessingML (WML) package, aka a .docx file.

    Acts as broker to other parts such as image, core properties, and style parts. It
    also acts as a convenient delegate when a mid-document object needs a service
    involving a remote ancestor. The `Parented.part` property inherited by many content
    objects provides access to this part object for that purpose.
    c             C   s"   t  | j¡}|  |tj¡}||fS )z=Return (footer_part, rId) pair for newly-created footer part.)r   ÚnewÚpackageÚ	relate_toÚRTZFOOTER)ÚselfÚfooter_partÚrId© r   úE/var/www/html/venv/lib/python3.7/site-packages/docx/parts/document.pyÚadd_footer_part   s    zDocumentPart.add_footer_partc             C   s"   t  | j¡}|  |tj¡}||fS )z=Return (header_part, rId) pair for newly-created header part.)r	   r   r   r   r   ZHEADER)r   Úheader_partr   r   r   r   Úadd_header_part!   s    zDocumentPart.add_header_partc             C   s   | j jS )zx
        A |CoreProperties| object providing read/write access to the core
        properties of this document.
        )r   Úcore_properties)r   r   r   r   r   '   s    zDocumentPart.core_propertiesc             C   s   t | j| ƒS )zW
        A |Document| object providing access to the content of this document.
        )r   Ú_element)r   r   r   r   Údocument/   s    zDocumentPart.documentc             C   s   |   |¡ dS )z/Remove related header part identified by *rId*.N)Zdrop_rel)r   r   r   r   r   Údrop_header_part6   s    zDocumentPart.drop_header_partc             C   s
   | j | S )z%Return |FooterPart| related by *rId*.)Úrelated_parts)r   r   r   r   r   r   :   s    zDocumentPart.footer_partc             C   s   | j  ||¡S )zÎ
        Return the style in this document matching *style_id*. Returns the
        default style for *style_type* if *style_id* is |None| or does not
        match a defined style of *style_type*.
        )ÚstylesZ	get_by_id)r   Zstyle_idÚ
style_typer   r   r   Ú	get_style>   s    zDocumentPart.get_stylec             C   s   | j  ||¡S )a\  
        Return the style_id (|str|) of the style of *style_type* matching
        *style_or_name*. Returns |None| if the style resolves to the default
        style for *style_type* or if *style_or_name* is itself |None|. Raises
        if *style_or_name* is a style of the wrong type or names a style not
        present in the document.
        )r"   Úget_style_id)r   Zstyle_or_namer#   r   r   r   r%   F   s    zDocumentPart.get_style_idc             C   s
   | j | S )z%Return |HeaderPart| related by *rId*.)r!   )r   r   r   r   r   r   P   s    zDocumentPart.header_partc             C   s   t | jj| ƒS )zc
        The |InlineShapes| instance containing the inline shapes in the
        document.
        )r   r   Úbody)r   r   r   r   Úinline_shapesT   s    zDocumentPart.inline_shapesc             C   s<   y|   tj¡S  tk
r6   t ¡ }|  |tj¡ |S X dS )z²
        A |NumberingPart| object providing access to the numbering
        definitions for this document. Creates an empty numbering part if one
        is not present.
        N)Úpart_related_byr   Z	NUMBERINGÚKeyErrorr
   r   r   )r   Únumbering_partr   r   r   r*   \   s    zDocumentPart.numbering_partc             C   s   | j  |¡ dS )z—
        Save this document to *path_or_stream*, which can be either a path to
        a filesystem location (a string) or a file-like object.
        N)r   Úsave)r   Zpath_or_streamr   r   r   r+   j   s    zDocumentPart.savec             C   s   | j jS )zu
        A |Settings| object providing access to the settings in the settings
        part of this document.
        )Ú_settings_partÚsettings)r   r   r   r   r-   q   s    zDocumentPart.settingsc             C   s   | j jS )zo
        A |Styles| object providing access to the styles in the styles part
        of this document.
        )Ú_styles_partr"   )r   r   r   r   r"   y   s    zDocumentPart.stylesc             C   s@   y|   tj¡S  tk
r:   t | j¡}|  |tj¡ |S X dS )z³
        A |SettingsPart| object providing access to the document-level
        settings for this document. Creates a default settings part if one is
        not present.
        N)r(   r   ZSETTINGSr)   r   Údefaultr   r   )r   Zsettings_partr   r   r   r,      s    zDocumentPart._settings_partc             C   s@   y|   tj¡S  tk
r:   t | j¡}|  |tj¡ |S X dS )zy
        Instance of |StylesPart| for this document. Creates an empty styles
        part if one is not present.
        N)r(   r   ZSTYLESr)   r   r/   r   r   )r   Zstyles_partr   r   r   r.      s    zDocumentPart._styles_partN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   Úpropertyr   r   r    r   r$   r%   r   r   r'   r*   r+   r-   r"   r,   r.   r   r   r   r   r      s"   
r   N)r3   Ú
__future__r   r   r   r   Zdocx.documentr   Zdocx.opc.constantsr   r   Zdocx.parts.hdrftrr   r	   Zdocx.parts.numberingr
   Zdocx.parts.settingsr   Zdocx.parts.storyr   Zdocx.parts.stylesr   Z
docx.shaper   Zdocx.sharedr   r   r   r   r   r   Ú<module>   s   