Add font family selector for watermark text

This commit is contained in:
2026-03-06 17:12:23 +02:00
parent 81e244e069
commit 727056f385
5 changed files with 95 additions and 3 deletions

View File

@@ -61,7 +61,31 @@ pub fn build_watermark_page(state: &AppState) -> adw::NavigationPage {
.adjustment(&gtk::Adjustment::new(cfg.watermark_font_size as f64, 8.0, 200.0, 1.0, 10.0, 0.0))
.build();
// Font family picker
let font_row = adw::ActionRow::builder()
.title("Font Family")
.subtitle("Choose a typeface for the watermark text")
.build();
let font_dialog = gtk::FontDialog::builder()
.title("Choose Watermark Font")
.modal(true)
.build();
let font_button = gtk::FontDialogButton::builder()
.dialog(&font_dialog)
.valign(gtk::Align::Center)
.build();
// Set initial font if one was previously selected
if !cfg.watermark_font_family.is_empty() {
let desc = gtk::pango::FontDescription::from_string(&cfg.watermark_font_family);
font_button.set_font_desc(&desc);
}
font_row.add_suffix(&font_button);
text_group.add(&text_row);
text_group.add(&font_row);
text_group.add(&font_size_row);
content.append(&text_group);
@@ -415,6 +439,16 @@ pub fn build_watermark_page(state: &AppState) -> adw::NavigationPage {
jc.borrow_mut().watermark_font_size = row.value() as f32;
});
}
// Wire font family picker
{
let jc = state.job_config.clone();
font_button.connect_font_desc_notify(move |btn| {
let desc = btn.font_desc();
if let Some(family) = desc.family() {
jc.borrow_mut().watermark_font_family = family.to_string();
}
});
}
// Wire position grid buttons
for (i, btn) in buttons.iter().enumerate() {
let jc = state.job_config.clone();