From 7512965608223333b1177d4f777810a8fdce2100 Mon Sep 17 00:00:00 2001 From: Chris Cochrun Date: Fri, 17 Oct 2025 07:07:39 -0500 Subject: [PATCH 1/2] more updating the readme --- readme.org | 2 -- 1 file changed, 2 deletions(-) diff --git a/readme.org b/readme.org index 6d0adb0..e378379 100644 --- a/readme.org +++ b/readme.org @@ -4,8 +4,6 @@ Lumina is a presentation app that works from a cli or a UI. The goal is that through a simple text file, you can describe an entire presentation and then load and control it either from the command line, or a UI. The UI also provides user friendly ways of creating the presentation to allow for flexibility for users to make something that works for regular folk as well as developers and nerds. * Why build this? -Well for one, I want more experience developing things and I don't have a good tool for this kind of thing on Linux. - Primarily, I don't think there is a good tool for this kind of thing on Linux. On Windows and Mac there is ProPresenter or Proclaim. Both amazing presentation software built for churches or worship centers and can be used by others for other things too, but incredible tools. I want to have a similar tool on Linux. The available tools out there now are often old, broken, or very difficult to use. I want something incredibly easy, with very sane or at least very customizable keyboard controls that allow me to quickly build a presentation and make it VERY easy to run it too. ** Features (planned are in parentheses) From 67a984a76197d8f35af997dcb9c289032f541073 Mon Sep 17 00:00:00 2001 From: Chris Cochrun Date: Fri, 17 Oct 2025 07:07:49 -0500 Subject: [PATCH 2/2] adding visual for where pdf pages go in presentation editor --- src/ui/presentation_editor.rs | 35 +++++++++++++++++++++++++++++------ 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/src/ui/presentation_editor.rs b/src/ui/presentation_editor.rs index c9e0eb7..81fe68f 100644 --- a/src/ui/presentation_editor.rs +++ b/src/ui/presentation_editor.rs @@ -21,6 +21,7 @@ pub struct PresentationEditor { pub presentation: Option, document: Option, current_slide: Option, + slides: Option>, page_count: Option, current_slide_index: Option, title: String, @@ -56,6 +57,7 @@ impl PresentationEditor { current_slide: None, current_slide_index: None, page_count: None, + slides: None, } } pub fn update(&mut self, message: Message) -> Action { @@ -191,18 +193,39 @@ impl PresentationEditor { } else { container(Space::new(0, 0)) }; + let pdf_pages: Vec> = + 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![ button::standard("Previous Page") .on_press(Message::PrevPage), horizontal_space(), button::standard("Next Page").on_press(Message::NextPage), ]; - let column = column![ - self.toolbar(), - presentation.center(Length::Fill), - control_buttons - ] - .spacing(theme::active().cosmic().space_l()); + let column = + column![self.toolbar(), main_row, control_buttons] + .spacing(theme::active().cosmic().space_l()); column.into() }