o
    7 h3                     @  s  d 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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mZmZ erZddlmZmZmZ G dd deZ G dd deZ!G dd deZ"G dd deZ#G dd deZ$dS )zBlxml custom element class for CT_GraphicalObjectFrame XML element.    )annotations)TYPE_CHECKINGcast)	parse_xml)CT_Chart)nsdecls)BaseShapeElement)
XsdBoolean	XsdString)CT_Table)BaseOxmlElementOneAndOnlyOneOptionalAttributeRequiredAttribute	ZeroOrOne)GRAPHIC_DATA_URI_CHARTGRAPHIC_DATA_URI_OLEOBJGRAPHIC_DATA_URI_TABLE)#CT_ApplicationNonVisualDrawingPropsCT_NonVisualDrawingPropsCT_Transform2Dc                   @  s0   e Zd ZU dZedZded< ed
ddZd	S )CT_GraphicalObjectz`a:graphic` element.

    The container for the reference to or definition of the framed graphical object (table, chart,
    etc.).
    za:graphicDataCT_GraphicalObjectDatagraphicDatareturnCT_Chart | Nonec                 C     | j jS )z;The `c:chart` grandchild element, or |None| if not present.)r   chartself r    a/var/www/html/figdemos/bartoux_crm/venv/lib/python3.10/site-packages/pptx/oxml/shapes/graphfrm.pyr   -      zCT_GraphicalObject.chartNr   r   )	__name__
__module____qualname____doc__r   r   __annotations__propertyr   r    r    r    r!   r   "   s   
 r   c                   @  s   e Zd ZU dZedZded< edZded< ede	Z
d	ed< edddZedddZedddZedddZedddZdS )r   zj`p:graphicData` element.

    The direct container for a table, a chart, or another graphical object.
    zc:chartr   r   za:tblzCT_Table | Nonetbluristrr   
str | Nonec                 C     | j du rdS | j jS )a  Optional `r:id` attribute value of `p:oleObj` descendent element.

        This value is `None` when this `p:graphicData` element does not enclose an OLE object.
        This value could also be `None` if an enclosed OLE object does not specify this attribute
        (it is specified optional in the schema) but so far, all OLE objects we've encountered
        specify this value.
        N)_oleObjrIdr   r    r    r!   blob_rId=   s   	zCT_GraphicalObjectData.blob_rIdbool | Nonec                 C  r.   )zOptional boolean indicating an embedded OLE object.

        Returns `None` when this `p:graphicData` element does not enclose an OLE object. `True`
        indicates an embedded OLE object and `False` indicates a linked OLE object.
        N)r/   is_embeddedr   r    r    r!   is_embedded_ole_objH      z*CT_GraphicalObjectData.is_embedded_ole_objc                 C  r.   )a  Optional str value of "progId" attribute of `p:oleObj` descendent.

        This value identifies the "type" of the embedded object in terms of the application used
        to open it.

        This value is `None` when this `p:graphicData` element does not enclose an OLE object.
        This could also be `None` if an enclosed OLE object does not specify this attribute (it is
        specified optional in the schema) but so far, all OLE objects we've encountered specify
        this value.
        N)r/   progIdr   r    r    r!   r6   Q   s   zCT_GraphicalObjectData.progIdc                 C  r.   )a  Optional value of "showAsIcon" attribute value of `p:oleObj` descendent.

        This value is `None` when this `p:graphicData` element does not enclose an OLE object. It
        is False when the `showAsIcon` attribute is omitted on the `p:oleObj` element.
        N)r/   
showAsIconr   r    r    r!   r7   _   r5   z!CT_GraphicalObjectData.showAsIconCT_OleObject | Nonec                 C  s    t d| d}|r|d S dS )a?  Optional `p:oleObj` element contained in this `p:graphicData' element.

        Returns `None` when this graphic-data element does not enclose an OLE object. Note that
        this returns the last `p:oleObj` element found. There can be more than one `p:oleObj`
        element because an `mc.AlternateContent` element may appear as the child of
        `p:graphicData` and that alternate-content subtree can contain multiple compatibility
        choices. The last one should suit best for reading purposes because it contains the lowest
        common denominator.
        zlist[CT_OleObject]z.//p:oleObjN)r   xpath)r   ZoleObjsr    r    r!   r/   h   s   zCT_GraphicalObjectData._oleObjNr   r-   r   r2   )r   r8   )r$   r%   r&   r'   r   r   r(   r*   r   r
   r+   r)   r1   r4   r6   r7   r/   r    r    r    r!   r   3   s   
 
r   c                   @  s   e Zd ZU dZedZded< edZded< edZd	ed
< e	d8ddZ
e	d9ddZd:ddZe	d;ddZe	d<ddZe	d=ddZe	d>ddZed?d(d)Zed@d*d+ZedAd1d2ZedBd5d6Zd7S )CCT_GraphicalObjectFramezb`p:graphicFrame` element.

    A container for a table, a chart, or another graphical object.
    zp:nvGraphicFramePr CT_GraphicalObjectFrameNonVisualnvGraphicFramePrzp:xfrmr   xfrmz	a:graphicr   graphicr   r   c                 C  r   )zAThe `c:chart` great-grandchild element, or |None| if not present.)rA   r   r   r    r    r!   r      r"   zCT_GraphicalObjectFrame.chartr-   c                 C  s   | j }|du r	dS |jS )zgThe `rId` attribute of the `c:chart` great-grandchild element.

        |None| if not present.
        N)r   r0   )r   r   r    r    r!   	chart_rId   s   z!CT_GraphicalObjectFrame.chart_rIdc                 C  s   | j S )zdReturn the required `p:xfrm` child element.

        Overrides version on BaseShapeElement.
        )r@   r   r    r    r!   get_or_add_xfrm   s   z'CT_GraphicalObjectFrame.get_or_add_xfrmr   c                 C  r   )z9`a:graphicData` grandchild of this graphic-frame element.)rA   r   r   r    r    r!   r      r"   z#CT_GraphicalObjectFrame.graphicDatar,   c                 C  s
   | j jjS )z;str value of `uri` attribute of `a:graphicData` grandchild.)rA   r   r+   r   r    r    r!   graphicData_uri   s   
z'CT_GraphicalObjectFrame.graphicData_uriboolc                 C  s   | j jtkS )zD`True` for graphicFrame containing an OLE object, `False` otherwise.)r   r+   r   r   r    r    r!   
has_oleobj   s   z"CT_GraphicalObjectFrame.has_oleobjr2   c                 C  r   )zOptional boolean indicating an embedded OLE object.

        Returns `None` when this `p:graphicFrame` element does not enclose an OLE object. `True`
        indicates an embedded OLE object and `False` indicates a linked OLE object.
        )r   r4   r   r    r    r!   r4      s   z+CT_GraphicalObjectFrame.is_embedded_ole_objid_intnamer0   xycxcyc           
      C  s6   t ||||||}|jj}	t|	_|	t| |S )zFReturn a `p:graphicFrame` element tree populated with a chart element.)	r=   new_graphicFramerA   r   r   r+   appendr   	new_chart)
clsrG   rI   r0   rJ   rK   rL   rM   graphicFramer   r    r    r!   new_chart_graphicFrame   s
   z.CT_GraphicalObjectFrame.new_chart_graphicFramec                 C  s@   t ttdtdd d| d| d| d| d| d	| d
S )zReturn a new `p:graphicFrame` element tree suitable for containing a table or chart.

        Note that a graphicFrame element is not a valid shape until it contains a graphical object
        such as a table.
        <p:graphicFrame ap*>
  <p:nvGraphicFramePr>
    <p:cNvPr id="" name=""/>
    <p:cNvGraphicFramePr>
      <a:graphicFrameLocks noGrp="1"/>
    </p:cNvGraphicFramePr>
    <p:nvPr/>
  </p:nvGraphicFramePr>
  <p:xfrm>
    <a:off x="" y=""/>
    <a:ext cx="" cy="zS"/>
  </p:xfrm>
  <a:graphic>
    <a:graphicData/>
  </a:graphic>
</p:graphicFrame>)r   r=   r   r   )rQ   rG   rI   rJ   rK   rL   rM   r    r    r!   rN      s$   			

z(CT_GraphicalObjectFrame.new_graphicFrameole_object_rIdr6   icon_rIdimgWimgHc              
   C  s   t ttdg dtddd d| d| d| d	| d
| d|	 d| d|
 d| d| d| d| d	| d| d|	 dS )a  Return newly-created `p:graphicFrame` for embedded OLE-object.

        `ole_object_rId` identifies the relationship to the OLE-object part.

        `progId` is a str identifying the object-type in terms of the application (program) used
        to open it. This becomes an attribute of the same name in the `p:oleObj` element.

        `icon_rId` identifies the relationship to an image part used to display the OLE-object as
        an icon (vs. a preview).
         rT   rU   rV   rrW   rX   rY   rZ   r[   r\   z"/>
  </p:xfrm>
  <a:graphic>
    <a:graphicData        uri="http://schemas.openxmlformats.org/presentationml/2006/ole">
      <p:oleObj showAsIcon="1"                r:id="z"                imgW="z"                imgH="z"                progId="z">
        <p:embed/>
        <p:pic>
          <p:nvPicPr>
            <p:cNvPr id="0" name=""/>
            <p:cNvPicPr/>
            <p:nvPr/>
          </p:nvPicPr>
          <p:blipFill>
            <a:blip r:embed="z"/>
            <a:stretch>
              <a:fillRect/>
            </a:stretch>
          </p:blipFill>
          <p:spPr>
            <a:xfrm>
              <a:off x="z"/>
              <a:ext cx="z"/>
            </a:xfrm>
            <a:prstGeom prst="rect">
              <a:avLst/>
            </a:prstGeom>
          </p:spPr>
        </p:pic>
      </p:oleObj>
    </a:graphicData>
  </a:graphic>
</p:graphicFrame>)r   r=   r   joinr   )rQ   rG   rI   r]   r6   r^   rJ   rK   rL   rM   r_   r`   r    r    r!   new_ole_object_graphicFrame   sH   		

##$$
z3CT_GraphicalObjectFrame.new_ole_object_graphicFramerowscolsc	           
      C  s<   |  ||||||}	t|	jj_|	jjt|||| |	S )zFReturn a `p:graphicFrame` element tree populated with a table element.)rN   r   rA   r   r+   rO   r   Znew_tbl)
rQ   rG   rI   re   rf   rJ   rK   rL   rM   rR   r    r    r!   new_table_graphicFrame,  s   
z.CT_GraphicalObjectFrame.new_table_graphicFrameNr#   r;   )r   r   )r   r   )r   r,   r   rE   r<   )rG   rH   rI   r,   r0   r,   rJ   rH   rK   rH   rL   rH   rM   rH   r   r=   )rG   rH   rI   r,   rJ   rH   rK   rH   rL   rH   rM   rH   r   r=   )rG   rH   rI   r,   r]   r,   r6   r,   r^   r,   rJ   rH   rK   rH   rL   rH   rM   rH   r_   rH   r`   rH   r   r=   )rG   rH   rI   r,   re   rH   rf   rH   rJ   rH   rK   rH   rL   rH   rM   rH   r   r=   )r$   r%   r&   r'   r   r?   r(   r@   rA   r)   r   rB   rC   r   rD   rF   r4   classmethodrS   rN   rd   rg   r    r    r    r!   r=   w   s:   
 



Mr=   c                   @  s2   e Zd ZU dZedZded< edZded< dS )	r>   zz`p:nvGraphicFramePr` element.

    This contains the non-visual properties of a graphic frame, such as name, id, etc.
    zp:cNvPrr   cNvPrzp:nvPrr   nvPrN)r$   r%   r&   r'   r   rj   r(   rk   r    r    r    r!   r>   7  s   
 r>   c                   @  sZ   e Zd ZU dZedeZded< edeZded< ede	ddZ
d	ed< edddZdS )CT_OleObjectz`p:oleObj` element, container for an OLE object (e.g. Excel file).

    An OLE object can be either linked or embedded (hence the name).
    r6   r-   zr:idr0   r7   F)defaultrE   r   c                 C  s   t | ddkS )z?True when this OLE object is embedded, False when it is linked.z	./p:embedr   )lenr:   r   r    r    r!   r3   S  s   zCT_OleObject.is_embeddedNrh   )r$   r%   r&   r'   r   r
   r6   r(   r0   r	   r7   r)   r3   r    r    r    r!   rl   E  s   
 rl   N)%r'   
__future__r   typingr   r   	pptx.oxmlr   pptx.oxml.chart.chartr   pptx.oxml.nsr   pptx.oxml.shapes.sharedr   pptx.oxml.simpletypesr	   r
   pptx.oxml.tabler   pptx.oxml.xmlchemyr   r   r   r   r   Z	pptx.specr   r   r   r   r   r   r   r   r=   r>   rl   r    r    r    r!   <module>   s&    D A