ChatPPT-pro / src /slide_builder.py
zovo314's picture
Upload folder using huggingface_hub
76684fa verified
from data_structures import SlideContent, Slide
from layout_manager import LayoutManager
# SlideBuilder 类用于构建单张幻灯片并通过 LayoutManager 自动分配布局
class SlideBuilder:
def __init__(self, layout_manager: LayoutManager):
self.layout_manager = layout_manager # 布局管理器实例
self.title = "" # 幻灯片标题
self.bullet_points = [] # 幻灯片要点列表,支持多级结构
self.image_path = None # 幻灯片图片路径
self.layout_id = None # 布局ID
self.layout_name = None # 布局名称
def set_title(self, title: str):
self.title = title # 设置幻灯片的标题
def add_bullet_point(self, bullet: str, level: int = 0):
"""
添加项目符号及其级别到 bullet_points 列表中。
:param bullet: 要点文本
:param level: 项目符号的层级,默认为 0(一级)
"""
self.bullet_points.append({'text': bullet, 'level': level}) # 添加要点和层级
def set_image(self, image_path: str):
self.image_path = image_path # 设置图片路径
def finalize(self) -> Slide:
"""
组装并返回最终的 Slide 对象,调用 LayoutManager 自动分配布局。
"""
# 创建 SlideContent 对象,注意 bullet_points 现在是字典列表,包含 text 和 level 信息
content = SlideContent(
title=self.title,
bullet_points=self.bullet_points,
image_path=self.image_path
)
# 调用 LayoutManager 分配布局
self.layout_id, self.layout_name = self.layout_manager.assign_layout(content)
# 返回最终的 Slide 对象
return Slide(layout_id=self.layout_id, layout_name=self.layout_name, content=content)