use std::path::Path;
use par_term_config;
pub fn make_path_relative_to_shaders(absolute_path: &str) -> String {
let shaders_dir = par_term_config::Config::shaders_dir();
let path = Path::new(absolute_path);
if let Ok(relative) = path.strip_prefix(&shaders_dir) {
let relative_str = relative.display().to_string();
relative_str.replace('\\', "/")
} else {
absolute_path.to_string()
}
}
pub fn show_reset_button(ui: &mut egui::Ui, has_override: bool) -> bool {
if has_override {
ui.button("\u{21BA}")
.on_hover_text("Reset to default")
.clicked()
} else {
ui.add_enabled(false, egui::Button::new("\u{21BA}"))
.on_hover_text("Using default value");
false
}
}
pub fn find_cubemap_prefix(folder: &std::path::Path) -> Option<std::path::PathBuf> {
let suffixes = ["px", "nx", "py", "ny", "pz", "nz"];
let extensions = ["png", "jpg", "jpeg", "hdr"];
if let Ok(entries) = std::fs::read_dir(folder) {
for entry in entries.flatten() {
let path = entry.path();
if let Some(stem) = path.file_stem().and_then(|s| s.to_str()) {
for suffix in &suffixes {
let pattern = format!("-{}", suffix);
if stem.ends_with(&pattern) {
let prefix = &stem[..stem.len() - pattern.len()];
let mut all_found = true;
for check_suffix in &suffixes {
let mut found = false;
for ext in &extensions {
let face_name = format!("{}-{}.{}", prefix, check_suffix, ext);
if folder.join(&face_name).exists() {
found = true;
break;
}
}
if !found {
all_found = false;
break;
}
}
if all_found {
return Some(folder.join(prefix));
}
}
}
}
}
}
None
}