From 6f33930cc98ad97f677e55ea398a0b456f9a599e Mon Sep 17 00:00:00 2001 From: Chris Cochrun Date: Tue, 19 Nov 2024 17:45:04 -0600 Subject: [PATCH] finally trying to start bringing in crisp properly --- Cargo.lock | 1 - Cargo.toml | 2 +- src/core/slide.rs | 183 +++++++++++++++++++++++----------------------- src/main.rs | 28 ++++--- 4 files changed, 105 insertions(+), 109 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1d37588..a240c14 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1257,7 +1257,6 @@ dependencies = [ [[package]] name = "crisp" version = "0.1.0" -source = "git+https://git.tfcconnection.org/chris/crisp#b01eda5e0e3df469b45ff91424f7ad6f806cbca3" dependencies = [ "lazy_static", "miette", diff --git a/Cargo.toml b/Cargo.toml index 807d0a8..19139d6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -23,4 +23,4 @@ ron = "0.8.1" sqlx = { version = "0.8.2", features = ["sqlite"] } dirs = "5.0.1" tokio = "1.41.1" -crisp = { git = "https://git.tfcconnection.org/chris/crisp" } +crisp = { path = "../crisp" } diff --git a/src/core/slide.rs b/src/core/slide.rs index 996ebe1..0769bb8 100644 --- a/src/core/slide.rs +++ b/src/core/slide.rs @@ -222,8 +222,7 @@ fn lisp_to_background(lisp: &Value) -> Background { v == Value::Keyword(Keyword::from("source")) }) { let path = list[source + 1]; - let path = String::from(path); - Background::from(path) + Background::try_from(&path) } else { Background::default() } @@ -365,46 +364,46 @@ impl Image { } } -fn build_image_bg( - atom: &Value, - image_map: &mut HashMap, - map_index: usize, -) { - // This needs to be the cons that contains (image . ...) - // the image is a symbol and the rest are keywords and other maps - if atom.is_symbol() { - // We shouldn't get a symbol - return; - } +// fn build_image_bg( +// atom: &Value, +// image_map: &mut HashMap, +// map_index: usize, +// ) { +// // This needs to be the cons that contains (image . ...) +// // the image is a symbol and the rest are keywords and other maps +// if atom.is_symbol() { +// // We shouldn't get a symbol +// return; +// } - for atom in - atom.list_iter().unwrap().map(|a| a.as_cons().unwrap()) - { - if atom.car() == &Value::Symbol("image".into()) { - build_image_bg(atom.cdr(), image_map, map_index); - } else { - let atom = atom.car(); - match atom { - Value::Keyword(keyword) => { - image_map.insert(keyword.to_string(), "".into()); - build_image_bg(atom, image_map, map_index); - } - Value::Symbol(symbol) => { - // let mut key; - // let image_map = image_map - // .iter_mut() - // .enumerate() - // .filter(|(i, e)| i == &map_index) - // .map(|(i, (k, v))| v.push_str(symbol)) - // .collect(); - build_image_bg(atom, image_map, map_index); - } - Value::String(string) => {} - _ => {} - } - } - } -} +// for atom in +// atom.list_iter().unwrap().map(|a| a.as_cons().unwrap()) +// { +// if atom.car() == &Value::Symbol("image".into()) { +// build_image_bg(atom.cdr(), image_map, map_index); +// } else { +// let atom = atom.car(); +// match atom { +// Value::Keyword(keyword) => { +// image_map.insert(keyword.to_string(), "".into()); +// build_image_bg(atom, image_map, map_index); +// } +// Value::Symbol(symbol) => { +// // let mut key; +// // let image_map = image_map +// // .iter_mut() +// // .enumerate() +// // .filter(|(i, e)| i == &map_index) +// // .map(|(i, (k, v))| v.push_str(symbol)) +// // .collect(); +// build_image_bg(atom, image_map, map_index); +// } +// Value::String(string) => {} +// _ => {} +// } +// } +// } +// } // fn build_slide(exp: Value) -> Result { // let mut slide_builder = SlideBuilder::new(); @@ -426,57 +425,57 @@ fn build_image_bg( // todo!() // } -fn build_slides( - cons: &lexpr::Cons, - mut current_symbol: Symbol, - mut slide_builder: SlideBuilder, -) -> SlideBuilder { - for value in cons.list_iter() { - dbg!(¤t_symbol); - match value { - Value::Cons(v) => { - slide_builder = build_slides( - &v, - current_symbol.clone(), - slide_builder, - ); - } - Value::Nil => { - dbg!(Value::Nil); - } - Value::Bool(boolean) => { - dbg!(boolean); - } - Value::Number(number) => { - dbg!(number); - } - Value::String(string) => { - dbg!(string); - } - Value::Symbol(symbol) => { - dbg!(symbol); - current_symbol = - Symbol::from_str(symbol).unwrap_or_default(); - } - Value::Keyword(keyword) => { - dbg!(keyword); - } - Value::Null => { - dbg!("null"); - } - Value::Char(c) => { - dbg!(c); - } - Value::Bytes(b) => { - dbg!(b); - } - Value::Vector(v) => { - dbg!(v); - } - } - } - slide_builder -} +// fn build_slides( +// cons: &lexpr::Cons, +// mut current_symbol: Symbol, +// mut slide_builder: SlideBuilder, +// ) -> SlideBuilder { +// for value in cons.list_iter() { +// dbg!(¤t_symbol); +// match value { +// Value::Cons(v) => { +// slide_builder = build_slides( +// &v, +// current_symbol.clone(), +// slide_builder, +// ); +// } +// Value::Nil => { +// dbg!(Value::Nil); +// } +// Value::Bool(boolean) => { +// dbg!(boolean); +// } +// Value::Number(number) => { +// dbg!(number); +// } +// Value::String(string) => { +// dbg!(string); +// } +// Value::Symbol(symbol) => { +// dbg!(symbol); +// current_symbol = +// Symbol::from_str(symbol).unwrap_or_default(); +// } +// Value::Keyword(keyword) => { +// dbg!(keyword); +// } +// Value::Null => { +// dbg!("null"); +// } +// Value::Char(c) => { +// dbg!(c); +// } +// Value::Bytes(b) => { +// dbg!(b); +// } +// Value::Vector(v) => { +// dbg!(v); +// } +// } +// } +// slide_builder +// } #[cfg(test)] mod test { diff --git a/src/main.rs b/src/main.rs index be4c4b6..161b5d6 100644 --- a/src/main.rs +++ b/src/main.rs @@ -84,10 +84,12 @@ struct App { impl Default for App { fn default() -> Self { let initial_slide = SlideBuilder::new() - .background(PathBuf::from( - "/home/chris/vids/test/chosensmol.mp4", - )) - .expect("oops video") + .background( + Background::try_from( + "/home/chris/vids/test/chosensmol.mp4", + ) + .unwrap(), + ) .text("Hello") .build() .expect("oops slide"); @@ -144,13 +146,11 @@ impl cosmic::Application for App { let initial_slide = SlideBuilder::new() .background( - PathBuf::from( + Background::try_from( "/home/chris/vids/test/camprules2024.mp4", ) - .canonicalize() .unwrap(), ) - .expect("oops video") .text("") .font("Quicksand") .font_size(50) @@ -163,11 +163,9 @@ impl cosmic::Application for App { let second_slide = SlideBuilder::new() .background( - PathBuf::from("/home/chris/pics/frodo.jpg") - .canonicalize() + Background::try_from("/home/chris/pics/frodo.jpg") .unwrap(), ) - .expect("oops video") .text("Hello") .font("Quicksand") .font_size(50) @@ -180,11 +178,9 @@ impl cosmic::Application for App { let tetrary_slide = SlideBuilder::new() .background( - PathBuf::from("/home/chris/pics/wojaks/reddit_the_xenomorph_s bigass wojak folder/Chads/ChristianChad_x16_drawing.png") - .canonicalize() + Background::try_from("/home/chris/pics/wojaks/reddit_the_xenomorph_s bigass wojak folder/Chads/ChristianChad_x16_drawing.png") .unwrap(), ) - .expect("oops video") .text("Hello") .font("Quicksand") .font_size(50) @@ -583,8 +579,10 @@ where fn test_slide<'a>() -> Element<'a, Message> { if let Ok(slide) = SlideBuilder::new() - .background(PathBuf::from("/home/chris/pics/frodo.jpg")) - .unwrap() + .background( + Background::try_from("/home/chris/pics/frodo.jpg") + .unwrap(), + ) .text("This is a frodo") .text_alignment(TextAlignment::TopCenter) .font_size(50)