Critical: undo toast now trashes only batch output files (not entire dir), JPEG scanline write errors propagated, selective metadata write result returned. High: zero-dimension guards in ResizeConfig/fit_within, negative aspect ratio rejection, FM integration toggle infinite recursion guard, saturating counter arithmetic in executor. Medium: PNG compression level passed to oxipng, pct mode updates job_config, external file loading updates step indicator, CLI undo removes history entries, watch config write failures reported, fast-copy path reads image dimensions for rename templates, discovery excludes unprocessable formats (heic/svg/ico/jxl), CLI warns on invalid algorithm/overwrite values, resolve_collision trailing dot fix, generation guards on all preview threads to cancel stale results, default DPI aligned to 0, watermark text width uses char count not byte length. Low: binary path escaped in Nautilus extension, file dialog filter aligned with discovery, reset_wizard clears preset_mode and output_dir.
41 lines
1.3 KiB
Rust
41 lines
1.3 KiB
Rust
pub mod step_adjustments;
|
|
pub mod step_compress;
|
|
pub mod step_convert;
|
|
pub mod step_images;
|
|
pub mod step_metadata;
|
|
pub mod step_output;
|
|
pub mod step_rename;
|
|
pub mod step_resize;
|
|
pub mod step_watermark;
|
|
pub mod step_workflow;
|
|
|
|
use gtk::prelude::*;
|
|
|
|
/// Creates a list factory for ComboRow dropdowns where labels never truncate.
|
|
/// The default GTK factory ellipsizes text, which cuts off long option names.
|
|
pub fn full_text_list_factory() -> gtk::SignalListItemFactory {
|
|
let factory = gtk::SignalListItemFactory::new();
|
|
factory.connect_setup(|_, item| {
|
|
let item = item.downcast_ref::<gtk::ListItem>().unwrap();
|
|
let label = gtk::Label::builder()
|
|
.xalign(0.0)
|
|
.margin_start(8)
|
|
.margin_end(8)
|
|
.margin_top(8)
|
|
.margin_bottom(8)
|
|
.build();
|
|
item.set_child(Some(&label));
|
|
});
|
|
factory.connect_bind(|_, item| {
|
|
let item = item.downcast_ref::<gtk::ListItem>().unwrap();
|
|
if let Some(obj) = item.item() {
|
|
if let Some(string_obj) = obj.downcast_ref::<gtk::StringObject>() {
|
|
if let Some(label) = item.child().and_downcast_ref::<gtk::Label>() {
|
|
label.set_label(&string_obj.string());
|
|
}
|
|
}
|
|
}
|
|
});
|
|
factory
|
|
}
|