PCQRSCANER/venv/Lib/site-packages/pptx/shapes/graphfrm.py

92 lines
2.7 KiB
Python
Raw Permalink Normal View History

2019-12-22 21:51:47 +01:00
# encoding: utf-8
"""Graphic Frame shape and related objects.
A graphic frame is a common container for table, chart, smart art, and media
objects.
"""
from __future__ import absolute_import, division, print_function, unicode_literals
from pptx.enum.shapes import MSO_SHAPE_TYPE
from pptx.shapes.base import BaseShape
from pptx.table import Table
class GraphicFrame(BaseShape):
"""Container shape for table, chart, smart art, and media objects.
Corresponds to a ``<p:graphicFrame>`` element in the shape tree.
"""
@property
def chart(self):
"""
The |Chart| object containing the chart in this graphic frame. Raises
|ValueError| if this graphic frame does not contain a chart.
"""
if not self.has_chart:
raise ValueError("shape does not contain a chart")
return self.chart_part.chart
@property
def chart_part(self):
"""
The |ChartPart| object containing the chart in this graphic frame.
"""
rId = self._element.chart_rId
chart_part = self.part.related_parts[rId]
return chart_part
@property
def has_chart(self):
"""
|True| if this graphic frame contains a chart object. |False|
otherwise. When |True|, the chart object can be accessed using the
``.chart`` property.
"""
return self._element.has_chart
@property
def has_table(self):
"""
|True| if this graphic frame contains a table object. |False|
otherwise. When |True|, the table object can be accessed using the
``.table`` property.
"""
return self._element.has_table
@property
def shadow(self):
"""Unconditionally raises |NotImplementedError|.
Access to the shadow effect for graphic-frame objects is
content-specific (i.e. different for charts, tables, etc.) and has
not yet been implemented.
"""
raise NotImplementedError("shadow property on GraphicFrame not yet supported")
@property
def shape_type(self):
"""
Unique integer identifying the type of this shape, e.g.
``MSO_SHAPE_TYPE.TABLE``.
"""
if self.has_chart:
return MSO_SHAPE_TYPE.CHART
elif self.has_table:
return MSO_SHAPE_TYPE.TABLE
else:
return None
@property
def table(self):
"""
The |Table| object contained in this graphic frame. Raises
|ValueError| if this graphic frame does not contain a table.
"""
if not self.has_table:
raise ValueError("shape does not contain a table")
tbl = self._element.graphic.graphicData.tbl
return Table(tbl, self)