diff --git a/pixstrip-gtk/src/steps/step_workflow.rs b/pixstrip-gtk/src/steps/step_workflow.rs index 5dd7ae9..420ff33 100644 --- a/pixstrip-gtk/src/steps/step_workflow.rs +++ b/pixstrip-gtk/src/steps/step_workflow.rs @@ -251,6 +251,26 @@ pub fn build_workflow_page(state: &AppState) -> adw::NavigationPage { .child(&scrolled) .build(); + // Drop target for .pixstrip-preset files + let drop_target = gtk::DropTarget::new(gtk::gio::File::static_type(), gtk::gdk::DragAction::COPY); + let jc_drop = state.job_config.clone(); + drop_target.connect_drop(move |_target, value, _x, _y| { + if let Ok(file) = value.get::() { + if let Some(path) = file.path() { + if path.extension().and_then(|e| e.to_str()) == Some("pixstrip-preset") { + let store = pixstrip_core::storage::PresetStore::new(); + if let Ok(preset) = store.import_from_file(&path) { + apply_preset_to_config(&mut jc_drop.borrow_mut(), &preset); + let _ = store.save(&preset); + return true; + } + } + } + } + false + }); + clamp.add_controller(drop_target); + adw::NavigationPage::builder() .title("Choose a Workflow") .tag("step-workflow")