diff options
author | S. Solomon Darnell | 2025-03-28 21:52:21 -0500 |
---|---|---|
committer | S. Solomon Darnell | 2025-03-28 21:52:21 -0500 |
commit | 4a52a71956a8d46fcb7294ac71734504bb09bcc2 (patch) | |
tree | ee3dc5af3b6313e921cd920906356f5d4febc4ed /.venv/lib/python3.12/site-packages/pptx/presentation.py | |
parent | cc961e04ba734dd72309fb548a2f97d67d578813 (diff) | |
download | gn-ai-master.tar.gz |
Diffstat (limited to '.venv/lib/python3.12/site-packages/pptx/presentation.py')
-rw-r--r-- | .venv/lib/python3.12/site-packages/pptx/presentation.py | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/pptx/presentation.py b/.venv/lib/python3.12/site-packages/pptx/presentation.py new file mode 100644 index 00000000..a41bfd59 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/pptx/presentation.py @@ -0,0 +1,113 @@ +"""Main presentation object.""" + +from __future__ import annotations + +from typing import IO, TYPE_CHECKING, cast + +from pptx.shared import PartElementProxy +from pptx.slide import SlideMasters, Slides +from pptx.util import lazyproperty + +if TYPE_CHECKING: + from pptx.oxml.presentation import CT_Presentation, CT_SlideId + from pptx.parts.presentation import PresentationPart + from pptx.slide import NotesMaster, SlideLayouts + from pptx.util import Length + + +class Presentation(PartElementProxy): + """PresentationML (PML) presentation. + + Not intended to be constructed directly. Use :func:`pptx.Presentation` to open or + create a presentation. + """ + + _element: CT_Presentation + part: PresentationPart # pyright: ignore[reportIncompatibleMethodOverride] + + @property + def core_properties(self): + """|CoreProperties| instance for this presentation. + + Provides read/write access to the Dublin Core document properties for the presentation. + """ + return self.part.core_properties + + @property + def notes_master(self) -> NotesMaster: + """Instance of |NotesMaster| for this presentation. + + If the presentation does not have a notes master, one is created from a default template + and returned. The same single instance is returned on each call. + """ + return self.part.notes_master + + def save(self, file: str | IO[bytes]): + """Writes this presentation to `file`. + + `file` can be either a file-path or a file-like object open for writing bytes. + """ + self.part.save(file) + + @property + def slide_height(self) -> Length | None: + """Height of slides in this presentation, in English Metric Units (EMU). + + Returns |None| if no slide width is defined. Read/write. + """ + sldSz = self._element.sldSz + if sldSz is None: + return None + return sldSz.cy + + @slide_height.setter + def slide_height(self, height: Length): + sldSz = self._element.get_or_add_sldSz() + sldSz.cy = height + + @property + def slide_layouts(self) -> SlideLayouts: + """|SlideLayouts| collection belonging to the first |SlideMaster| of this presentation. + + A presentation can have more than one slide master and each master will have its own set + of layouts. This property is a convenience for the common case where the presentation has + only a single slide master. + """ + return self.slide_masters[0].slide_layouts + + @property + def slide_master(self): + """ + First |SlideMaster| object belonging to this presentation. Typically, + presentations have only a single slide master. This property provides + simpler access in that common case. + """ + return self.slide_masters[0] + + @lazyproperty + def slide_masters(self) -> SlideMasters: + """|SlideMasters| collection of slide-masters belonging to this presentation.""" + return SlideMasters(self._element.get_or_add_sldMasterIdLst(), self) + + @property + def slide_width(self): + """ + Width of slides in this presentation, in English Metric Units (EMU). + Returns |None| if no slide width is defined. Read/write. + """ + sldSz = self._element.sldSz + if sldSz is None: + return None + return sldSz.cx + + @slide_width.setter + def slide_width(self, width: Length): + sldSz = self._element.get_or_add_sldSz() + sldSz.cx = width + + @lazyproperty + def slides(self): + """|Slides| object containing the slides in this presentation.""" + sldIdLst = self._element.get_or_add_sldIdLst() + self.part.rename_slide_parts([cast("CT_SlideId", sldId).rId for sldId in sldIdLst]) + return Slides(sldIdLst, self) |