summaryrefslogtreecommitdiffstats
path: root/src/preview
diff options
context:
space:
mode:
authorJeff Zhao <jeff.no.zhao@gmail.com>2022-01-16 15:15:33 -0500
committerJeff Zhao <jeff.no.zhao@gmail.com>2022-01-16 15:15:33 -0500
commit821b69f0b460783554d793c925d26e844f34a632 (patch)
tree1843daf4f8f0c5560469887142fb1ce9e0881cd6 /src/preview
parent8bdd74f821344be79692d369c0762bcb85d05661 (diff)
rework file previews to have better argument handling
Diffstat (limited to 'src/preview')
-rw-r--r--src/preview/preview_file.rs45
1 files changed, 40 insertions, 5 deletions
diff --git a/src/preview/preview_file.rs b/src/preview/preview_file.rs
index 7f0d1ff..9d270e6 100644
--- a/src/preview/preview_file.rs
+++ b/src/preview/preview_file.rs
@@ -44,8 +44,8 @@ impl Foreground {
backend: &mut TuiBackend,
p: path::PathBuf,
) -> io::Result<Output> {
- let preview_options = context.config_ref().preview_options_ref();
let config = context.config_ref();
+ let preview_options = config.preview_options_ref();
match preview_options.preview_script.as_ref() {
None => Err(io::Error::new(
@@ -57,21 +57,40 @@ impl Foreground {
let display_options = config.display_options_ref();
let constraints: &[Constraint; 3] = &display_options.default_layout;
- let layout_rect = ui::build_layout(area, constraints, display_options)[2];
+ let ui_context = context.ui_context_ref();
+ if ui_context.layout.is_empty() {
+ return Err(io::Error::new(
+ io::ErrorKind::Other,
+ "No preview area",
+ ));
+ }
+ let layout_rect = &ui_context.layout[ui_context.layout.len() - 1];
let file_full_path = p.as_path();
let preview_width = layout_rect.width;
let preview_height = layout_rect.height;
+ let preview_x_coord = layout_rect.x;
+ let preview_y_coord = layout_rect.y;
+
let image_cache = 0;
let preview_image = if preview_options.preview_images { 1 } else { 0 };
// spawn preview process
Command::new(script)
+ .arg("--path")
.arg(file_full_path)
+ .arg("--preview-width")
.arg(preview_width.to_string())
+ .arg("--preview-height")
.arg(preview_height.to_string())
- .arg(image_cache.to_string())
+ .arg("--x-coord")
+ .arg(preview_x_coord.to_string())
+ .arg("--y-coord")
+ .arg(preview_y_coord.to_string())
+ .arg("--preview-images")
.arg(preview_image.to_string())
+ .arg("--image-cache")
+ .arg(image_cache.to_string())
.output()
}
}
@@ -109,10 +128,17 @@ impl Background {
let display_options = config.display_options_ref();
let constraints: &[Constraint; 3] = &display_options.default_layout;
- let layout_rect = ui::build_layout(area, constraints, display_options)[2];
+ let ui_context = context.ui_context_ref();
+ if ui_context.layout.is_empty() {
+ return;
+ }
+ let layout_rect = &ui_context.layout[ui_context.layout.len() - 1];
let preview_width = layout_rect.width;
let preview_height = layout_rect.height;
+ let preview_x_coord = layout_rect.x;
+ let preview_y_coord = layout_rect.y;
+
let image_cache = 0;
let preview_image = if preview_options.preview_images { 1 } else { 0 };
@@ -122,11 +148,20 @@ impl Background {
let file_full_path = path.as_path();
let res = Command::new(script)
+ .arg("--path")
.arg(file_full_path)
+ .arg("--preview-width")
.arg(preview_width.to_string())
+ .arg("--preview-height")
.arg(preview_height.to_string())
- .arg(image_cache.to_string())
+ .arg("--x-coord")
+ .arg(preview_x_coord.to_string())
+ .arg("--y-coord")
+ .arg(preview_y_coord.to_string())
+ .arg("--preview-images")
.arg(preview_image.to_string())
+ .arg("--image-cache")
+ .arg(image_cache.to_string())
.output();
match res {
Ok(output) => {