Skip to content

Commit 1fc7d9d

Browse files
committed
feat: add default slide layout classes for enhanced slide management
1 parent 48bbf2b commit 1fc7d9d

File tree

1 file changed

+215
-0
lines changed

1 file changed

+215
-0
lines changed

src/tppt/_tppt/slide_layout.py

Lines changed: 215 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33

44

55
class TpptSlideLayout:
6+
"""Base class for all slide layouts."""
7+
68
@overload
79
def __get__(self, instance: None, objtype: type[Any]) -> type[Self]: ...
810

@@ -18,6 +20,8 @@ def __get__(self, instance: object | None, objtype: type[Any]) -> type[Self] | S
1820

1921

2022
class DefaultMasterSlide(TpptSlideLayout):
23+
"""Default master slide layout."""
24+
2125
def __init__(
2226
self,
2327
*,
@@ -32,3 +36,214 @@ def __init__(
3236
self.date = date
3337
self.footer = footer
3438
self.slide_number = slide_number
39+
40+
41+
class DefaultTitleSlide(TpptSlideLayout):
42+
"""Title slide layout."""
43+
44+
def __init__(
45+
self,
46+
*,
47+
title: str,
48+
subtitle: str | None = None,
49+
date: datetime.date | None = None,
50+
footer: str | None = None,
51+
slide_number: bool = True,
52+
) -> None:
53+
self.title = title
54+
self.subtitle = subtitle
55+
self.date = date
56+
self.footer = footer
57+
self.slide_number = slide_number
58+
59+
60+
class DefaultTitleAndContentSlide(TpptSlideLayout):
61+
"""Title and content slide layout."""
62+
63+
def __init__(
64+
self,
65+
*,
66+
title: str,
67+
content: str | None = None,
68+
date: datetime.date | None = None,
69+
footer: str | None = None,
70+
slide_number: bool = True,
71+
) -> None:
72+
self.title = title
73+
self.content = content
74+
self.date = date
75+
self.footer = footer
76+
self.slide_number = slide_number
77+
78+
79+
class DefaultSectionHeaderSlide(TpptSlideLayout):
80+
"""Section header slide layout."""
81+
82+
def __init__(
83+
self,
84+
*,
85+
title: str,
86+
text: str | None = None,
87+
date: datetime.date | None = None,
88+
footer: str | None = None,
89+
slide_number: bool = True,
90+
) -> None:
91+
self.title = title
92+
self.text = text
93+
self.date = date
94+
self.footer = footer
95+
self.slide_number = slide_number
96+
97+
98+
class DefaultTwoContentSlide(TpptSlideLayout):
99+
"""Two content slide layout."""
100+
101+
def __init__(
102+
self,
103+
*,
104+
title: str,
105+
left_content: str | None = None,
106+
right_content: str | None = None,
107+
date: datetime.date | None = None,
108+
footer: str | None = None,
109+
slide_number: bool = True,
110+
) -> None:
111+
self.title = title
112+
self.left_content = left_content
113+
self.right_content = right_content
114+
self.date = date
115+
self.footer = footer
116+
self.slide_number = slide_number
117+
118+
119+
class DefaultComparisonSlide(TpptSlideLayout):
120+
"""Comparison slide layout."""
121+
122+
def __init__(
123+
self,
124+
*,
125+
title: str,
126+
left_title: str | None = None,
127+
left_content: str | None = None,
128+
right_title: str | None = None,
129+
right_content: str | None = None,
130+
date: datetime.date | None = None,
131+
footer: str | None = None,
132+
slide_number: bool = True,
133+
) -> None:
134+
self.title = title
135+
self.left_title = left_title
136+
self.left_content = left_content
137+
self.right_title = right_title
138+
self.right_content = right_content
139+
self.date = date
140+
self.footer = footer
141+
self.slide_number = slide_number
142+
143+
144+
class DefaultTitleOnlySlide(TpptSlideLayout):
145+
"""Title only slide layout."""
146+
147+
def __init__(
148+
self,
149+
*,
150+
title: str,
151+
date: datetime.date | None = None,
152+
footer: str | None = None,
153+
slide_number: bool = True,
154+
) -> None:
155+
self.title = title
156+
self.date = date
157+
self.footer = footer
158+
self.slide_number = slide_number
159+
160+
161+
class DefaultBlankSlide(TpptSlideLayout):
162+
"""Blank slide layout."""
163+
164+
def __init__(
165+
self,
166+
*,
167+
date: datetime.date | None = None,
168+
footer: str | None = None,
169+
slide_number: bool = True,
170+
) -> None:
171+
self.date = date
172+
self.footer = footer
173+
self.slide_number = slide_number
174+
175+
176+
class DefaultContentWithCaptionSlide(TpptSlideLayout):
177+
"""Content with caption slide layout."""
178+
179+
def __init__(
180+
self,
181+
*,
182+
title: str,
183+
content: str | None = None,
184+
date: datetime.date | None = None,
185+
footer: str | None = None,
186+
slide_number: bool = True,
187+
) -> None:
188+
self.title = title
189+
self.content = content
190+
self.date = date
191+
self.footer = footer
192+
self.slide_number = slide_number
193+
194+
195+
class DefaultPictureWithCaptionSlide(TpptSlideLayout):
196+
"""Picture with caption slide layout."""
197+
198+
def __init__(
199+
self,
200+
*,
201+
title: str,
202+
picture_path: str | None = None,
203+
date: datetime.date | None = None,
204+
footer: str | None = None,
205+
slide_number: bool = True,
206+
) -> None:
207+
self.title = title
208+
self.picture_path = picture_path
209+
self.date = date
210+
self.footer = footer
211+
self.slide_number = slide_number
212+
213+
214+
class DefaultTitleAndVerticalTextSlide(TpptSlideLayout):
215+
"""Title and vertical text slide layout."""
216+
217+
def __init__(
218+
self,
219+
*,
220+
title: str,
221+
vertical_text: str | None = None,
222+
date: datetime.date | None = None,
223+
footer: str | None = None,
224+
slide_number: bool = True,
225+
) -> None:
226+
self.title = title
227+
self.vertical_text = vertical_text
228+
self.date = date
229+
self.footer = footer
230+
self.slide_number = slide_number
231+
232+
233+
class DefaultVerticalTitleAndTextSlide(TpptSlideLayout):
234+
"""Vertical title and text slide layout."""
235+
236+
def __init__(
237+
self,
238+
*,
239+
vertical_title: str,
240+
text: str | None = None,
241+
date: datetime.date | None = None,
242+
footer: str | None = None,
243+
slide_number: bool = True,
244+
) -> None:
245+
self.vertical_title = vertical_title
246+
self.text = text
247+
self.date = date
248+
self.footer = footer
249+
self.slide_number = slide_number

0 commit comments

Comments
 (0)