From 32ea206c8c2ebf7ca7d70a7d482a9836f312248c Mon Sep 17 00:00:00 2001 From: lashman Date: Fri, 6 Mar 2026 13:19:11 +0200 Subject: [PATCH] Add WebP effort, AVIF speed controls, case conversion and regex rename - Compress step: WebP Encoding Effort (0-6) and AVIF Encoding Speed (1-10) - Rename step: Case Conversion combo (lowercase/UPPERCASE/Title Case) - Rename step: Find and Replace group with regex pattern and replacement --- pixstrip-gtk/src/steps/step_compress.rs | 14 ++++++++++++++ pixstrip-gtk/src/steps/step_rename.rs | 25 +++++++++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/pixstrip-gtk/src/steps/step_compress.rs b/pixstrip-gtk/src/steps/step_compress.rs index 5a4e4cc..e39b793 100644 --- a/pixstrip-gtk/src/steps/step_compress.rs +++ b/pixstrip-gtk/src/steps/step_compress.rs @@ -118,11 +118,25 @@ pub fn build_compress_page(state: &AppState) -> adw::NavigationPage { .active(false) .build(); + let webp_effort_row = adw::SpinRow::builder() + .title("WebP Encoding Effort") + .subtitle("0-6, higher is slower but smaller files") + .adjustment(>k::Adjustment::new(4.0, 0.0, 6.0, 1.0, 1.0, 0.0)) + .build(); + + let avif_speed_row = adw::SpinRow::builder() + .title("AVIF Encoding Speed") + .subtitle("1-10, lower is slower but better compression") + .adjustment(>k::Adjustment::new(6.0, 1.0, 10.0, 1.0, 1.0, 0.0)) + .build(); + advanced_expander.add_row(&jpeg_row); advanced_expander.add_row(&progressive_row); advanced_expander.add_row(&png_row); advanced_expander.add_row(&webp_row); + advanced_expander.add_row(&webp_effort_row); advanced_expander.add_row(&avif_row); + advanced_expander.add_row(&avif_speed_row); advanced_group.add(&advanced_expander); content.append(&advanced_group); diff --git a/pixstrip-gtk/src/steps/step_rename.rs b/pixstrip-gtk/src/steps/step_rename.rs index 73563e1..ef1f155 100644 --- a/pixstrip-gtk/src/steps/step_rename.rs +++ b/pixstrip-gtk/src/steps/step_rename.rs @@ -121,9 +121,34 @@ pub fn build_rename_page(state: &AppState) -> adw::NavigationPage { .margin_start(12) .build(); + let case_row = adw::ComboRow::builder() + .title("Case Conversion") + .subtitle("Convert filename case") + .build(); + let case_model = gtk::StringList::new(&["No change", "lowercase", "UPPERCASE", "Title Case"]); + case_row.set_model(Some(&case_model)); + + let regex_group = adw::PreferencesGroup::builder() + .title("Find and Replace") + .description("Regex find-and-replace on original filename") + .build(); + + let find_row = adw::EntryRow::builder() + .title("Find (regex)") + .build(); + + let replace_row = adw::EntryRow::builder() + .title("Replace with") + .build(); + + regex_group.add(&find_row); + regex_group.add(&replace_row); + advanced_group.add(&template_row); advanced_group.add(&help_label); + advanced_group.add(&case_row); content.append(&advanced_group); + content.append(®ex_group); drop(cfg);