adding visual for where pdf pages go in presentation editor
Some checks are pending
/ test (push) Waiting to run

This commit is contained in:
Chris Cochrun 2025-10-17 07:07:49 -05:00
parent 7512965608
commit 67a984a761

View file

@ -21,6 +21,7 @@ pub struct PresentationEditor {
pub presentation: Option<Presentation>, pub presentation: Option<Presentation>,
document: Option<Document>, document: Option<Document>,
current_slide: Option<Handle>, current_slide: Option<Handle>,
slides: Option<Vec<Handle>>,
page_count: Option<i32>, page_count: Option<i32>,
current_slide_index: Option<i32>, current_slide_index: Option<i32>,
title: String, title: String,
@ -56,6 +57,7 @@ impl PresentationEditor {
current_slide: None, current_slide: None,
current_slide_index: None, current_slide_index: None,
page_count: None, page_count: None,
slides: None,
} }
} }
pub fn update(&mut self, message: Message) -> Action { pub fn update(&mut self, message: Message) -> Action {
@ -191,18 +193,39 @@ impl PresentationEditor {
} else { } else {
container(Space::new(0, 0)) container(Space::new(0, 0))
}; };
let pdf_pages: Vec<Element<Message>> =
if let Some(pages) = &self.slides {
pages
.iter()
.map(|page| {
let image = widget::image(page)
.content_fit(ContentFit::ScaleDown);
container(image).into()
})
.collect()
} else {
vec![horizontal_space().into()]
};
let pages_column = container(
column(pdf_pages)
.spacing(theme::active().cosmic().space_xs())
.padding(theme::spacing().space_l),
)
.class(theme::Container::Card);
let main_row = row![
pages_column.width(Length::FillPortion(1)),
presentation.center(Length::FillPortion(2))
]
.spacing(theme::spacing().space_xxl);
let control_buttons = row![ let control_buttons = row![
button::standard("Previous Page") button::standard("Previous Page")
.on_press(Message::PrevPage), .on_press(Message::PrevPage),
horizontal_space(), horizontal_space(),
button::standard("Next Page").on_press(Message::NextPage), button::standard("Next Page").on_press(Message::NextPage),
]; ];
let column = column![ let column =
self.toolbar(), column![self.toolbar(), main_row, control_buttons]
presentation.center(Length::Fill), .spacing(theme::active().cosmic().space_l());
control_buttons
]
.spacing(theme::active().cosmic().space_l());
column.into() column.into()
} }